Class unloading in jdk15

Zhengyu Gu zgu at redhat.com
Mon Apr 13 13:08:56 UTC 2020


Hi Vicente,

Thanks for reporting the problem.

I think we have a bug in setting up pacing for evacuation, where we can 
not reuse immediately garbage regions until concurrent class unloading 
is completed. I see a few allocation failures during that phase, that 
sent GCs into STW modes.

In the meanwhile, you way want to play with pacing parameters for 
aggressive pacing.

-Zhengyu

On 4/12/20 1:51 PM, Vicente Rossello wrote:
> Hi,
> 
> I tried shenandoah with JDK15 (latest build from builds.shipilev.net) in
> our build, it works better than with G1, without even tuning anything, so
> that's great.
> 
> I also tried enabling class unloading (we have it disabled with G1,
> we don't really get a lot of memory back, but GC times do increase a little
> bit), but it didn't work with shenandoah, GC times become very high.
> 
> These are GC logs of our full build, with and without class unloading:
> https://gist.github.com/cocorossello/2c7e774b89f7cb3e3c97ec5758d879ff
> 
> Our application is a web application, using dependency injection and
> dynamic proxies. I have tried to make a reproducer but I couldn't, it's not
> an easy task... Maybe the problem comes from dependency injection that
> creates proxies...
> 
> I have tried reducing the build and enabling class load/unload logs
> (-verbose:class), to see if that helps:
> 
> https://gist.github.com/cocorossello/f77049148e694b91e785696b1808fb4e  ->
> Reduced build, class unloading off, verbose class define
> 
> 
> https://gist.github.com/cocorossello/52c1c88c782adc1a0537fd8aa92a6c82  ->
> Reduced build, class unloading on, verbose class define
> 
> Please let me know if I can do something else, unfortunately I can't share
> the code.
> 
> Thank you,
> Vicente.
> 



More information about the shenandoah-dev mailing list