On Thu, 17 Jul 2025 21:20:06 GMT, Phil Race <p...@openjdk.org> wrote:

>> I tried to compare how Cleaner and Disposer are used. I found that in most 
>> cases Cleaner uses `this` as the object to track. But Disposer often uses a 
>> separate object like disposerReferent or some kind of anchor. This patch is 
>> one example. In some places we even replaced this with a different object. 
>> You can see that in the following RFR:
>> https://bugs.openjdk.org/browse/JDK-8030099
>> https://mail.openjdk.org/pipermail/swing-dev/2015-October/005053.html
>> 
>> I think I found the reason: https://bugs.openjdk.org/browse/JDK-8071507
>> 
>> In older versions of the JDK the Disposer had to use phantom references. 
>> Phantom references allow native cleanup to happen after the object is 100% 
>> no longer reachable. But this had a problem, the object stayed in memory 
>> until the reference was added to the queue and the code called 
>> [clear](https://github.com/openjdk/jdk/blob/bc72f476d1281dae2adb2322004c9880c1a6b66c/src/java.desktop/share/classes/sun/java2d/Disposer.java#L134).
>> 
>> To avoid keeping large AWT or Java2D objects in memory for too long the code 
>> used small helper objects as referents instead of using the real object.
>> 
>> Now the problem described in JDK-8071507 is fixed. So maybe we no longer 
>> need to use small disposer referents. And you can check that by the test 
>> from the description of this PR.
>
> I know this is possible, but I'd prefer to keep this pattern. This way It is 
> crystal clear that nothing to do with reference queues etc are delaying the 
> GC from immediately reclaiming the memory.
> Honestly, it probably matters not so much for JRSUIControls, and even less so 
> for CGraphicsEnvironment, but may matter for some other cases. 
> 
> A later follow-up fix could go change a whole bunch of these cases at once 
> and we'd then have a good reference (pun intended) as to whether any issues 
> showed up.

sounds good

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/26331#discussion_r2214413658

Reply via email to