下面的代码:
- Java code
public static void main(String[] args){ new JFrame("test").setVisible(true);; }
这里的JFrame对象,单从代码看,在内存中并没有任何的引用去引用它,那么按照虚拟机的垃圾回收机制,它是不是应该过一段时间后被垃圾回收了?但实际上不太可能,因为窗口一直在那里,没有消失。这个如何解释呢?
------解决方案--------------------
你看到的代码仅仅是一部分(甚至是非常非常之小的一部分),根本不可能确定“内存中并没有任何的引用引用
它”实际上SWING的线程模型 在后台运行,一定是有另外的线程在引用JFrame这个对象以及相关资源,只是这些代
码你这里看不到罢了
------解决方案--------------------
java中只要有关于图形用户界面的组件在运行,那么它就必然同时启动一个事件线程来监测这些组件,这些组件就是被JVM自动启动的事件线程引用着