为什么垃圾收集器不会破坏弹簧容器

时间:2015-01-04 09:46:05

标签: java spring garbage-collection

我在课堂上加载我的春天语境如下:

public class Loader {
    public static void main(String args[]){
        final ConfigurableApplicationContext context =
            new FileSystemXmlApplicationContext(
                new String[] { serializationSpringContextPath }
            );

        System.out.println("main over");    
    }
}

主方法完成后的事件上下文仍然存在。垃圾收集器怎么没有 收集它?

1 个答案:

答案 0 :(得分:6)

如果您创建ConfigurableApplicationContext,则需要在完成后调用close()。否则,上下文中的bean以及上下文本身将不会释放任何正在保留的资源 - 包括线程。

例如,上下文中创建非守护程序线程的任何bean都会阻止程序关闭。

顺便说一下,这与垃圾收集无关。一旦所有非守护程序线程执行完毕,GC或没有GC,Java程序就会终止。