RFR: 8339341: SurfaceManager cacheMap retains strong references [v4]

Nikita Gubarkov ngubarkov at openjdk.org
Thu Oct 17 18:58:55 UTC 2024


On Thu, 17 Oct 2024 18:43:58 GMT, Phil Race <prr at openjdk.org> wrote:

>> src/java.desktop/share/classes/sun/awt/image/SurfaceManager.java line 102:
>> 
>>> 100:      * and this map is just a weak mapping for the bookkeeping purposes.
>>> 101:      */
>>> 102:     private final Map<ProxyCache, WeakReference<SurfaceDataProxy>> weakCache = new WeakHashMap<>(2);
>> 
>> why does this one not need to be a synchronized map ?
>
> Ping ! on this .

Because we only use it inside `synchronized` blocks. We need to do this explicitly because in one place it is needed for acquiring two monitors in particular order, and in second place it covers an iteration loop. Therefore there is no need to wrap it into synchronized wrapper.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/20825#discussion_r1805274907


More information about the client-libs-dev mailing list