在Java中,对象存储在堆中,但方法局部变量位于堆栈中。但是当我打开jconsole时,我看不到堆栈中分配的任何内存。我只看到堆和permgen(Java 6)。堆栈只是堆中的逻辑分离而不是物理分离吗?
答案 0 :(得分:1)
没有。 Stack是一个不同的内存区域,专用于保存与方法调用相关的信息,例如参数值以及在方法返回后程序流应返回的位置。
答案 1 :(得分:1)
JVM使用进程的本机堆栈。这可以最大限度地减少开销,并允许堆栈是虚拟的(它的最大大小可能比实际使用的大很多)
因此,大多数堆栈很少使用(<&lt; <10%的最大值)并且绘制它们可能比使用更容易混淆。