JDK 23 | JDK 24 |
---|---|
23Fixed | 24 b05Fixed |
Relates :
|
|
Relates :
|
|
Relates :
|
|
Relates :
|
|
Relates :
|
Most iteration through CLDG currently keeps the metadata alive by loading the holder and creates a handle to it. For most task this looks seemingly too restrictive and unnecessary. We should evaluate where this is needed and try to remove the artificial lifetime extension that can occur. The CLDG iterator can also become far less restrictive after JDK-8307106 (and JDK-8308387) which made the CLDG list concurrent. Holding `ClassLoaderDataGraph_lock` may still be required for some uses but it is not a requirement for the iterator. In JDK-8326005 we observe that metadata for some ~160K transient LambdaForm are kept alive while a last ditch metaspace GC is performed, leading to an metaspace out of memory. Added this as a bug so we do not lose track of this issue. This effects generational ZGC the most as the last ditch metaspace GCs are concurrent and it only does reference processing (and by extension class unloading) for the old generation in major collections.
|