对象引用变量(在a内)存储在哪里?

时间:2014-04-21 13:03:16

标签: memory-management jvm

我现在正在学习JVM内存模型。我有一个问题:

package com; public class TestAllocation { private static final int _1MB = 1204*1024; public static void main(String[] args){ testAllocation(); } public static void testAllocation(){ byte[] allocation1,allocation2,allocation3,allocation4; allocation1 = new byte[2 * _1MB]; allocation2 = new byte[2 * _1MB]; allocation3 = new byte[2 * _1MB]; allocation4 = new byte[2 * _1MB]; } } 那么,引用allocation1,allocation2存储在哪里?由于testAllocation()是一个静态方法,因此,此函数中的变量存储在方法区域中?但每次调用一个函数时,它都是堆栈 push / pop operation.So,allocation1,allocation存储在
testAllocation()的堆栈框架?

但有一点很清楚,就是数组值存储在 java heap 中,对吗?

1 个答案:

答案 0 :(得分:1)

使方法保持静态不会改变存储变量的位置。

testAllocation()结束时,堆栈上将有四个引用(allocation1,allocation2,allocation3和allocation4)。

这四个引用将引用存储在堆上的四个字节数组。