RFR: 8280454: G1: ClassLoaderData verification keeps CLDs live that causes problems with VerifyDuringGC during Remark
Stefan Karlsson
stefank at openjdk.java.net
Wed Jun 1 06:05:36 UTC 2022
On Mon, 30 May 2022 17:09:35 GMT, Thomas Schatzl <tschatzl at openjdk.org> wrote:
> Hi all,
>
> can I have reviews for this change that makes a few CLDG iterations no-keepalive during GC pauses?
>
> This fixes a bug where the `VerifyDuringGC` verification otherwise kept alive all classes, effectively disabling class unloading during (g1) concurrent mark.
>
> Afaict this verification code is only every called during GC pauses, so the change should be fine.
>
> As for the change itself, I tried to avoid cluttering the code with `ClassLoaderDataGraphIterator<>` by using typedefs - unfortunately only C++ 17 allows omitting the `<>` if all template parameters are defaulted.
>
> There is also a new test case for just this.
>
> Testing: tier1-5
>
> Thanks,
> Thomas
src/hotspot/share/classfile/classLoaderDataGraph.cpp line 328:
> 326: public:
> 327: ClassLoaderDataGraphIteratorBase() : _next(ClassLoaderDataGraph::_head), _thread(Thread::current()), _hm(_thread) {
> 328: _thread = Thread::current();
Pre-existing: this code sets the _thread variable twice. Maybe clean that up?
-------------
PR: https://git.openjdk.java.net/jdk/pull/8949
More information about the hotspot-runtime-dev
mailing list