我在课堂上加载我的春天语境如下:
public class Loader {
public static void main(String args[]){
final ConfigurableApplicationContext context =
new FileSystemXmlApplicationContext(
new String[] { serializationSpringContextPath }
);
System.out.println("main over");
}
}
主方法完成后的事件上下文仍然存在。垃圾收集器怎么没有 收集它?
答案 0 :(得分:6)
如果您创建ConfigurableApplicationContext
,则需要在完成后调用close()
。否则,上下文中的bean以及上下文本身将不会释放任何正在保留的资源 - 包括线程。
例如,上下文中创建非守护程序线程的任何bean都会阻止程序关闭。
顺便说一下,这与垃圾收集无关。一旦所有非守护程序线程执行完毕,GC或没有GC,Java程序就会终止。