在Java中如果我们实例化一个对象然后它将位于堆内存但是如果我们实例化一个单例类对象然后它对象定位在哪里???(堆或类区域作为静态引用)会发生什么
答案 0 :(得分:1)
即使只从static
字段引用,也不会在堆中创建并存储在方法中不是纯粹本地的实例。
(如果实例是方法的本地实例并且不能在方法终止后继续存在,那么JVM 可以作为优化,将它分配到堆栈上。这不是严格的适用于您的问题,只是解释上面第一句中的警告。)
答案 1 :(得分:0)
所有创建的实例都将存储在堆中。因此,即使它是单例类,也只会在堆中创建唯一的实例。但该参考文献将由静态文件保存。因为静态字段是类定义(不是实例)的一部分,该引用将与存储在PermGen中的类元数据一起存储,PermGen实际上是堆的一部分