美文网首页
Java数组在内存中如何存放

Java数组在内存中如何存放

作者: 极客天空 | 来源:发表于2020-04-18 20:55 被阅读0次

当一个对象使用关键字“new”创建时,会在堆上分配内存空间,然后返回对象的引用,这对数组来说也是一样的,因为数组也是一个对象;

一维数组

int[] arr = new int[3];
在以上代码中,arr变量存放了数组对象的引用;如果你创建了空间大小为10的整形数组,情况是一样的,一个数组对象所占的空间在堆上被分配,然后返回其引用;


一维数组.png

二维数组

那么二维数组是如何存储的呢?事实上,在Java中只有一维数组,二维数组是一个存放了数组的数组,如下代码及示意图:
int[ ][ ] arr = new int[3][ ];
arr[0] = new int[3];
arr[1] = new int[5];
arr[2] = new int[4];

2维数组.png

数组对象及其引用存放在内存中的哪里

在Java中,数组同样是一个对象,所以对象在内存中如何存放同样适用于数组;
正如我们都知道的,java运行时数据区包括堆,JVM栈和其它。如下代码是一个小例子,那么就让我们来看看数组和它的引用在内存中是如何存放的.
class A {
int x;
int y;
}
...
public void m1() {
int i = 0;
m2();
}
public void m2() {
A a = new A();
}
...
如上代码,让我们来调用方法m1,看看发生了什么:
当m1被调用的时候,栈帧Frame-1被创建并push到栈中,同时局部变量i也在栈帧Frame-1内创建。
然后,m2方法在m1方法内部被调用,栈帧Frame-2被创建并push到栈中,在m2方法中,一个新的对象A在堆中被创建,而它的引用则被put到栈帧Frame-2里;
现在内存中堆和栈的大致情况如下图:


堆和栈.png

相关文章

  • Java数组在内存中如何存放

    当一个对象使用关键字“new”创建时,会在堆上分配内存空间,然后返回对象的引用,这对数组来说也是一样的,因为数组也...

  • java数组学习

    数组存储方式: 数组引用变量是存放在栈内存(stack)中,数组元素是存放在堆内存(heap)中,通过栈内存中的指...

  • 浅谈JVM

    堆、栈、方法区概念区别 1, Java 堆 堆内存用于存放由new创建的对象和数组。在堆中分配的内存,由java...

  • 一篇了解JVM堆(Heap),你学会了吗?

    1.JVM堆的概念 JVM中的堆是用来存放对象的内存空间,几乎所有的Java对象、数组都存储在JVM的堆内存中。比...

  • java编程中的堆与栈,你了解多少?

    在JVM中内存有这5类 堆(Heap) 存放关键字new创建的对象和数组; java堆是jvm内存管理中最大的一块...

  • 关键字static

    简介 java内存分为: 1.栈内存:存放一些基本类型的变量、数组和对象的引用; 2.堆内存:存放一些对象; st...

  • java 面试题 并发相关

    java 的内存模型(JMM) 主内存 java内存模型规定所有变量存放在主内存中 类比硬件中的内存 工作内存 每...

  • 数组内存分配图解

    Java中的内存分配图: 数组的内存图解---- 一个数组 数组的内存图解 ----- 2个数组 数组内存...

  • Java数组基本功(动态初始化、静态初始化)

    ——疯狂Java读书笔记 3个问题: ①java中,声明一个数组的过程中是如何分配内存的 ②Java数组的初始化一...

  • 数组内存分配图解

    Java中的内存分配图: 数组的内存图解---- 一个数组 数组的内存图解 ----- 2个数组 数组内存图解 -...

网友评论

      本文标题:Java数组在内存中如何存放

      本文链接:https://www.haomeiwen.com/subject/djzovhtx.html