我引用了这个链接。 Heap memory
我有疑问
class Sample
{
public static void main(String[] args)
{
Date dt=new Date();
System.out.println(""+dt);
}
}
首先dt
将位于伊甸园空间,如果GC发生,它将转到幸存者空间,如果GC在dt
位于< strong>幸存者空间(如果我错了,请纠正我。)
我的问题是:
dt
仍然存在?(伊甸园空间,幸存者空间等)非常感谢.....
答案 0 :(得分:1)
如果显示日期(程序完成运行过程),这些dt将保留在堆空间吗?
(1)程序完成后,堆上什么都没有(dt不存在)
如果没有发生GC,那么dt仍会存在? (伊甸园空间,幸存者空间等)
(2)所有关于“dt”的说法都是它将在eden空间中创建,之后如果它进入幸存者空间或Tenured Generation或者被垃圾收集全部由GC管理而你无法确切地知道它
程序完成运行过程dt将没有参考我是对的吗?
(3)是的,它没有任何参考。事实上,当方法终止时,dt将有资格获得GC(现在如果gc发生rt离开或需要时间你不知道)
要明确的是,GC没有任何保证,程序执行期间分配的任何内存可能在程序终止后仍然分配,在这种情况下,它将由操作系统回收