Questions on concurrent class unloading

Zhengyu Gu zgu at redhat.com
Mon Apr 8 15:27:26 UTC 2019


Hi,

I am studying concurrent class unloading in ZGC, it looks to me that 
nothing gets unlinked (ZNMethod::unlink())and purged (ZNMethod::purge()).

Inside ZNMethodUnlinkClosure::do_nmethod() [1]

It appears that nm->is_unloading() can never be true. Otherwise, 
assertion should fail inside nm->flush_dependencies(false), cause 
neither Universe::heap()->is_gc_active() (true for STW GC) nor 
is_ConcurrentGC_thread() is true.

Similar with ZNMethodPurgeClosure [2] , nm->make_unloaded() has similar 
assertion.

What did I miss?

Thanks,

-Zhengyu


[1] 
http://hg.openjdk.java.net/jdk/jdk/file/542735f2a53e/src/hotspot/share/gc/z/zNMethod.cpp#l279

[2] 
http://hg.openjdk.java.net/jdk/jdk/file/542735f2a53e/src/hotspot/share/gc/z/zNMethod.cpp#l357





More information about the zgc-dev mailing list