为什么JFrame实例总是在Swing应用程序中可以访问?这不会阻止它被垃圾收集?
JFrame frame = new JFrame();
System.out.println(Window.getWindows().length); // says '1'
通话dispose()无济于事.它甚至没有显示出来.
java.awt.Windows上没有getWindows方法,但有一个Frame.getFrames()方法.
但我知道他们都使用WeakReference来管理这些事情.
基本上这个想法是Window和Frame类都有一个名为weakThis的字段,它是对当前帧/窗口对象的弱引用.每当需要存储对象时(例如在appcontext中),使用weakThis字段代替此字段.(如果你不知道的话,弱引用不会阻止对象的gc-ing)
编辑:Window.getWindows在1.6中添加.