RFR(s): 8203343: VM.{metaspace|classloaders|classhierarchy...} jcmd should show invocation targets for Generated{Method|Constructor}AccessorImpl classes

coleen.phillimore at oracle.com coleen.phillimore at oracle.com
Thu Jun 14 16:04:57 UTC 2018


This was a good find of David's.  Thank you for fixing the test.
Coleen

On 6/14/18 7:30 AM, Thomas Stüfe wrote:
> Hi all,
>
> hopefully last changes, with feedback added from Coleen and David.
>
> Only changes in the provided regression test: I run it now with
> -Dsun.reflect.noInflation to make the test independent from the
> reflection inflation threshold. I also corrected the copyright dates.
>
> Delta: http://cr.openjdk.java.net/~stuefe/webrevs/8203343-VM.metaspace-show-reflection-invocation-targets/webrev.01-to-02/webrev/
> Full: http://cr.openjdk.java.net/~stuefe/webrevs/8203343-VM.metaspace-show-reflection-invocation-targets/webrev.02/webrev/
>
> Thank you,
>
> Thomas
>
>
> On Wed, Jun 6, 2018 at 6:05 PM, Thomas Stüfe <thomas.stuefe at gmail.com> wrote:
>> Dear all,
>>
>> may I please have feedback and if possible reviews for this small addition:
>>
>> CR: https://bugs.openjdk.java.net/browse/JDK-8203343
>> Webrev: http://cr.openjdk.java.net/~stuefe/webrevs/8203343-VM.metaspace-show-reflection-invocation-targets/webrev.00/webrev/
>>
>> (Note: this patch goes atop of
>> https://bugs.openjdk.java.net/browse/JDK-8203682, which is currently
>> up for RFR).
>>
>> ---
>>
>> When analyzing situations involving a lot of reflection, one often
>> stares at walls of "GeneratedXXXAccessorXXX" classes. These names are
>> generated and not at all helpful in analyzing the problem (e.g. which
>> component in a server node does this much reflection and hence uses so
>> much metaspace).
>>
>> This patch adds the ability to print out invocation targets
>> additionally to class names if the class is a generated accessor - for
>> now this ability has been added to VM.metaspace, VM.classloaders and
>> VM.class_hierarchy.
>>
>> Example output from "VM.class_hierarchy":
>>
>> <snip>
>> |--jdk.internal.reflect.MagicAccessorImpl/null
>> <snip>
>> |  |--jdk.internal.reflect.ConstructorAccessorImpl/null
>> |  |  |--jdk.internal.reflect.GeneratedConstructorAccessor18/0x00007f9ee8350c10
>> (invokes: org/springframework/boot/context/properties/ConfigurationPropertiesBindingPostProcessorRegistrar::<init>
>> ()V)
>> |  |  |--jdk.internal.reflect.GeneratedConstructorAccessor17/0x00007f9ee8349c00
>> (invokes: org/springframework/boot/context/properties/EnableConfigurationPropertiesImportSelector$ConfigurationPropertiesBeanRegistrar::<init>
>> ()V)
>> <snip>
>> |  |--jdk.internal.reflect.MethodAccessorImpl/null
>> |  |  |--jdk.internal.reflect.GeneratedMethodAccessor23/0x00007f9ec8329b60
>> (invokes: org/apache/tomcat/util/modeler/AttributeInfo::setIs (Z)V)
>> |  |  |--jdk.internal.reflect.GeneratedMethodAccessor22/0x00007f9ee831bc70
>> (invokes: org/springframework/boot/autoconfigure/SpringBootApplication::exclude
>> ()[Ljava/lang/Class;)
>> <snip>
>>
>> See here more examples:
>>
>> "VM.class_hierarchy"
>> http://cr.openjdk.java.net/~stuefe/webrevs/8203343-VM.metaspace-show-reflection-invocation-targets/example-VM.class_hierarchy.txt
>>
>> "VM.classloaders show-classes"
>> http://cr.openjdk.java.net/~stuefe/webrevs/8203343-VM.metaspace-show-reflection-invocation-targets/example-VM.classloaders.txt
>>
>>
>> ----
>>
>> Note: I am not sure if this is a fit for hotspot-runtime or
>> serviceability. Sorry for crossposting.
>>
>> Thank you,
>>
>> Thomas



More information about the hotspot-runtime-dev mailing list