日期:2014-05-20  浏览次数:20743 次

JFrame对象与垃圾回收问题
下面的代码:
Java code
    public static void main(String[] args){
            new JFrame("test").setVisible(true);;
        }

这里的JFrame对象,单从代码看,在内存中并没有任何的引用去引用它,那么按照虚拟机的垃圾回收机制,它是不是应该过一段时间后被垃圾回收了?但实际上不太可能,因为窗口一直在那里,没有消失。这个如何解释呢?

------解决方案--------------------

你看到的代码仅仅是一部分(甚至是非常非常之小的一部分),根本不可能确定“内存中并没有任何的引用引用

它”实际上SWING的线程模型 在后台运行,一定是有另外的线程在引用JFrame这个对象以及相关资源,只是这些代

码你这里看不到罢了
------解决方案--------------------
java中只要有关于图形用户界面的组件在运行,那么它就必然同时启动一个事件线程来监测这些组件,这些组件就是被JVM自动启动的事件线程引用着