RFR: 8318707: Remove the Java Management Extension (JMX) Management Applet (m-let) feature [v3]
Kevin Walls
kevinw at openjdk.org
Thu Jan 11 21:06:26 UTC 2024
On Thu, 11 Jan 2024 12:23:37 GMT, Daniel Fuchs <dfuchs at openjdk.org> wrote:
>> Hi Daniel -
>> I am missing see how being a ClassLoader relates to the leak where the Introspector holds on to a reference to the most recent MBean. I didn't locate the jdk5 change, I only read a short synopsis.
>>
>> I can make this test create an MBean which is a ClassLoader, and the test can do its check that having the loader MBean load a class, creates a distinct class. I can add that update here. But it looks like an MLet test which leaked into the Introspector test. 8-)
>
> Hi Kevin,
>
> To verify whether the Introspector holds a reference to a *Class Object* you need that class to be loaded by a custom class loader, and verify that the custom class loader that loaded that class can be garbage collected.
>
> If the class loader that loaded that class has not been garbage collected after you released all references to it, then it's because the class it loaded is still referenced somewhere.
>
> The logic of the test is as follows:
> You create an MBean L which is a class loader and able to load class C. L must be the defining class loader for C.
> You register L in the MBeanServer.
> You ask the MBeanServer to create an MBean of class C through L (this is why you must use the variant of createMBean that takes a loader name).
> You keep a weak ref to L
> You unregister L and the MBean of class C from the MBeanServer and make sure the test doesn't have any strong reference to them (or to class C).
> Then you start GC and wait until the weak ref to L is enqueued. If that doesn't happen, it's because the Introspector still hold a reference to class C.
>
> You cannot test that if C has been loaded by the system class loader.
I am updating those two tests.
I read the test as checking that an Object instance is collected, rather than Class Object, so was favouring making it simpler.
But we can use an MBean which is a URLClassLoader, and things will be more similar to the originals.
Some of MXBeanLoadingTest1 is duplicating some of ClassLeakTest, so something for future auditing perhaps...
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/16363#discussion_r1449391121
More information about the serviceability-dev
mailing list