<Swing Dev> RFR: 4907798: MEMORY LEAK: javax.swing.plaf.basic.BasicPopupMenuUI$MenuKeyboardHelper [v2]
Alexander Zuev
kizune at openjdk.java.net
Mon Nov 9 12:03:14 UTC 2020
On Tue, 3 Nov 2020 18:41:20 GMT, Sergey Bylokhov <serb at openjdk.org> wrote:
>> Alexander Zuev has updated the pull request incrementally with one additional commit since the last revision:
>>
>> Test case made multiplatform and testing all the LaF's
>
> test/jdk/javax/swing/JMenu/PopupReferenceMemoryLeak.java line 57:
>
>> 55: try {
>> 56: // Set system look and feel
>> 57: UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
>
> I suggest checking all installed L&Fs for example https://github.com/openjdk/jdk/pull/989/files
Fixed
> src/java.desktop/share/classes/javax/swing/plaf/basic/BasicPopupMenuUI.java line 1229:
>
>> 1227: // and uninstall menu keybindings
>> 1228: removeItems();
>> 1229: menuInputMap = null;
>
> Just curious, will the uninstall(); at the start of the method will clear this flag as well?
We do call ninstall() at the beginning of the method but it does not resolve the issue.
> test/jdk/javax/swing/JMenu/PopupReferenceMemoryLeak.java line 89:
>
>> 87: for(int i=0; i<3; i++) {
>> 88: try {
>> 89: ArrayList gc = new ArrayList();
>
> It will be useful to call System.gc() and limit the size of the heap via -mx
System.gc() does not affect test in any way so i just left it out.
> test/jdk/javax/swing/JMenu/PopupReferenceMemoryLeak.java line 100:
>
>> 98: }
>> 99: robot.waitForIdle();
>> 100: robot.keyPress(KeyEvent.VK_ALT);
>
> Can we skip the robot interaction and instead show the popup menu ourselves? (not via menu items)
No, unfortunately one of the mechanics i'm testing only reproducible when popup is being opened from JMenuBar.
-------------
PR: https://git.openjdk.java.net/jdk/pull/1035
More information about the swing-dev
mailing list