不,Java不保证在程序退出时GC将触发。如果要对退出使用
Runtime.addShutdownHook方法执行操作。阅读这在SPEC说什么孙文章。
Java平台的规范几乎没有保证垃圾收集的实际工作方式。这是Java虚拟机规范(JVMS)关于内存管理的内容。
堆是在虚拟机启动时创建的。自动存储管理系统(称为垃圾收集器)可以回收对象的堆存储;对象永远不会显式释放。Java虚拟机不假定使用特定类型的自动存储管理系统,可以根据实现者的系统要求选择存储管理技术。1尽管看起来有些混乱,但未严格定义垃圾收集模型这一事实实际上很重要有用-
严格定义的垃圾回收模型可能无法在所有平台上实现。同样,从长远来看,这可能会阻止有用的优化并损害平台的性能。尽管没有一个地方包含所需垃圾收集器行为的完整定义,但是许多Java模型是通过Java语言规范和JVMS中的许多部分隐式指定的。虽然不能保证遵循的确切过程,但是所有兼容的虚拟机都共享本章中介绍的基本对象生命周期。



