On Thu, 4 Jan 2024 10:02:39 GMT, Kevin Walls <[email protected]> wrote:
>> test/jdk/javax/management/Introspector/ClassLeakTest.java line 53:
>>
>>> 51:
>>> 52: MBeanServer mbs = MBeanServerFactory.createMBeanServer();
>>> 53: ObjectName testName = new ObjectName("x:name=Test");
>>
>> Q: I'd just like to understand why it is `x:name=Test` instead of
>> `x:type=Test` as it was before.
>
> These ObjectName patterns (domain:key=value) don't matter very much for these
> test mbeans.
> We just need an ObjectName to pass when registering the MBean, and also to
> use when querying, e.g. calling getMBeanInfo.
>
> The domain part was "x" but could be empty, but it must also define at least
> one key=value.
> The "type=mlet" might still work (I just tested: it does 8-) ), but I wanted
> to remove it as it would be misleading.
> So we need to add some key=value and just giving a name is enough.
In ClassLeakTest.java, it was creating two MBeans, but now only creates one.
It was creating a PrivateMLet (which it registers using type=mlet) and
comparing classloader with another MBean. The second MBean is created using
the m-let name as the "loader name" parameter to mbs.createMBean(). This
doesn't make sense without MLets, which are classloaders.
The test retains is stated goal of checking a reference to the MBean class is
not retained after it is unloaded.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/16363#discussion_r1441576425