堆栈/堆上的整数和整数数组存储

时间:2014-04-16 13:13:47

标签: java integer stack heap

我很想知道整数和整数数组是如何存储在java的堆栈/堆中的,是否有人可以指向我的链接?或者有人可以向我解释一下。

更新1: 这是如何影响整数和整数数组作为Java中方法的参数传递的方式。

谢谢

3 个答案:

答案 0 :(得分:0)

变量只包含对这个对象的引用,这个引用存储在堆栈中以防局部变量,但是对象的数据存储在堆中。

您可以阅读更多内容,例如:link

enter image description here

答案 1 :(得分:0)

方法变量存储在Stack中。另一方面,对象存储在堆中,如下图所示。 这就是为什么如果你得到StackOverFlowException,这意味着你在方法中声明了太多变量,或者你在递归调用中调用了太多方法。如果你得到Java堆空间错误,这意味着你创建的对象比你做的多。 对于堆栈和堆解释,我建议this link

enter image description here

答案 2 :(得分:0)

无论何时在本地范围(方法)中声明变量,它都会被放入堆栈。

即:Type myVariable会将新变量的空间推送到该方法堆栈框架上,但由于它未初始化而无法使用。

为变量赋值时,该值将被放入堆栈的保留空间。

现在这里是棘手的部分。如果类型是原始类型,则该值包含您指定的值。例如,int a = 55将字面值55放入该空间 但是,如果类型是非原始类型,即Object的某个子类,则放入堆栈的值实际上是内存地址。此内存地址指向堆上的某个位置,该位置是存储实际Object的位置。

在创建时将对象放入堆中。

示例

private void myMethod()
{
    Object myObject = new Object();
}

我们正在声明一个变量,因此我们在堆栈帧上获得了空间。类型是一个Object,因此该值将成为指向创建Object时分配的堆上空间的指针。