2016-10-01 54 views
4

当创建对象并调用构造函数时,构造函数调用的存储位置是什么?它是堆栈还是堆?构造函数调用的存储位置在哪里?堆栈还是堆?

+0

有用读:https://stackoverflow.com/questions/2826222/jvm-heap-and-stack/7597480#7597480 – Dez

+0

调用构造函数就像调用一个称为特殊方法''它使用堆栈像任何其他方法。 –

回答

1

堆仅用于存储对象。没有办法在堆上调用构造函数。

它的调用是在堆栈上完成的。

堆栈用于方法调用。它用于创建方法堆栈。尽管构造函数不是一种方法。但是,您总是可以按照任何方法编写任何逻辑或赋值。所以它像任何其他方法一样在一个堆栈中实现。

4

构造函数调用的参数和局部变量存储在堆栈中,直到构造函数返回。

构造函数创建的对象存储在堆中。


1 - ...除非你有“逃脱分析”启用,JIT编译器可以判断该对象可以在堆栈上安全地分配为止。

1
在JVM对堆栈和堆

运行时数据区为如下,

1)堆:存储区域为对象(一个每JVM实例)

2)Java堆栈:Storage是用于本地变量,中间操作结果(每个线程一个)