On Mon, 5 Oct 2020 19:49:43 GMT, Sergey Bylokhov <s...@openjdk.org> wrote:

> While working on the JDK-8240709 I have found that the test created for 
> JDK-8134947 (currently executed on macOS only)
> can fail due to memory leaks(more often if change it to be stricter). See my 
> comments inline.

src/java.desktop/macosx/classes/com/apple/laf/AquaButtonUI.java line 227:

> 225:         }
> 226:         uninstallHierListener(b);
> 227:         AquaUtilControlSize.removeSizePropertyListener(b);

A tiny leak existed from the initial Mac OS X Port Project.

src/java.desktop/macosx/classes/com/apple/laf/AquaSpinnerUI.java line 159:

> 157:             if (tf != null) {
> 158:                 tf.removeFocusListener(getNextButtonHandler());
> 159:                 tf.removeFocusListener(getPreviousButtonHandler());

We started to add these listeners in JDK-8238824, but forgot to remove it.

src/java.desktop/macosx/classes/sun/lwawt/LWWindowPeer.java line 497:

> 495:     public void setBackground(final Color c) {
> 496:         super.setBackground(c);
> 497:         updateOpaque();

This code was added in the JDK-8033786, when it was implemented it was possible 
to call this method from the
Window.setBackground() and from the Window.getPeer().setBackground().

Since the Window.setBackground() is always followed by the 
peer.setOpaque()->updateOpaque(), and now it is not possible
to use the peer directly this method became redundant.

Deleted it in this fix since it generates a bunch of memory garbage.

test/jdk/javax/swing/JFileChooser/FileChooserListenerLeak.java line 60:

> 58:     }
> 59:
> 60:     private static void checkListenersCount(Component comp) {

Just a test improvement, now we will check the listeners recursively for each 
component inside FileChooser.

test/jdk/javax/swing/UI/UnninstallUIMemoryLeaks/UnninstallUIMemoryLeaks.java 
line 83:

> 81:  * @run main/timeout=450/othervm UnninstallUIMemoryLeaks
> 82:  */
> 83: public final class UnninstallUIMemoryLeaks {

I made this test stricter:
 - The execution time is increased to 350 seconds per L&F.
 - To minimize the overall time execution the test now forks a subtest for each 
L&F and run it in parallel
 - Now the test recursively checks the number of listeners in all components
 - The "-mx12m" option is changed to "-mx9m"

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

PR: https://git.openjdk.java.net/jdk/pull/514

Reply via email to