RFR 8243572: Multiple tests fail with assert(cld->klasses() != 0LL) failed: unexpected NULL for cld->klasses()

Mandy Chung mandy.chung at oracle.com
Tue Apr 28 20:10:03 UTC 2020


We need to have a better description for the users to tell what these 
statistics mean.   This is about the metaspace space for classes which 
does not have a strong relationship with its defining loader, meaning 
that they can be unloaded aggressively while its defining loader is 
still alive.   It's defined in ClassOption::STRONG [1] and users can 
refer to its specification. "non-strong" is the best term I can come up 
with.  Maybe Markus has other suggestion.

ClassLoaderStats::_hidden_classes_count should be renamed to indicate 
that it does not count all hidden classes.

Mandy
[1] 
https://download.java.net/java/early_access/jdk15/docs/api/java.base/java/lang/invoke/MethodHandles.Lookup.ClassOption.html#STRONG

On 4/28/20 12:54 PM, Harold Seigel wrote:
>
> Klass::is_non_strong_hidden() is a function that is internal to the 
> JVM, not visible to users.  I think users should see either 'hidden' 
> or 'strong hidden', and not the awkward term 'non strong hidden'.
>
> Harold
>
> On 4/28/2020 3:47 PM, Mandy Chung wrote:
>>
>>
>> On 4/28/20 12:42 PM, Harold Seigel wrote:
>>>
>>> Hi Mandy,
>>>
>>> Thanks for the review.
>>>
>>> I thought that the term 'hidden classes' referred to weak hidden 
>>> classes and we would use the term 'strong hidden classes' to refer 
>>> to hidden classes that were not weak. Hence, I don't think we need 
>>> to change 'hidden_classes...' to 'non_strong_hidden_classes...'.
>>>
>>> Also, I think that 'non_strong_hidden_classes' sounds really awkward 
>>> and would prefer to either leave it as is or change to 
>>> 'weak_hidden_classes'.
>>>
>>
>> It's an existing term: Klass::is_non_strong_hidden.   We no longer 
>> refer to "weak hidden classes".
>>
>> Mandy
>>
>>> Does that sound okay?
>>>
>>> Thanks, Harold
>>>
>>> On 4/28/2020 3:36 PM, Mandy Chung wrote:
>>>> Hi Harold,
>>>>
>>>> On 4/28/20 10:27 AM, Harold Seigel wrote:
>>>>> :
>>>>> Open Webrev: 
>>>>> http://cr.openjdk.java.net/~hseigel/bug_8243572/webrev/index.html
>>>>>
>>>>
>>>> This patch looks okay in general.  JFR is tracking the classes 
>>>> loaded that has no strong relationship with any class loader.  VM 
>>>> implementation calls such CLD that has a class mirror.  In other 
>>>> words, it is only tracking the hidden classes defined with the 
>>>> default option.
>>>>
>>>> So some suggestion:
>>>>
>>>> classLoaderStats.hpp
>>>>    82   uintx             _hidden_classes_count;
>>>>
>>>> rename this on to non_strong_hidden_classes_count
>>>>
>>>> src/hotspot/share/jfr/metadata/metadata.xml
>>>>
>>>>   221     <Field type="boolean" name="hiddenClassLoader" label="Hidden Class Loader" />
>>>>
>>>> There is no such thing called "hidden class loader".  Perhaps simply "hidden classes"?
>>>>
>>>>   727     <Field type="long" name="hiddenClassCount" label="Hidden Classes" description="Number of hidden classes" />
>>>>   728     <Field type="ulong" contentType="bytes" name="hiddenChunkSize" label="Total Hidden Classes Chunk Size"
>>>>   729       description="Total size of all allocated metaspace chunks for hidden classes (each chunk has several blocks)" />
>>>>   730     <Field type="ulong" contentType="bytes" name="hiddenBlockSize" label="Total Hidden Classes Block Size"
>>>>   731       description="Total size of all allocated metaspace blocks for hidden classes (each chunk has several blocks)" />
>>>> what about s/hidden classes/non-strong hidden classes/?
>>>>
>>>> Mandy
>>



More information about the hotspot-runtime-dev mailing list