2.4 数组的内存图

一.java内存分配:

1. 栈:方法运行时使用的内存,比如main方法运行,进入方法栈中进行,代码执行完毕会出栈

2. 堆:存储对象或者数组,new来创建的,都存储在堆内存并产生地址值,每一块空间的地址值都是不一样的

3. 方法区(元空间):存储可以运行的class文件

4. 本地方法栈:jvm在使用操作系统功能的时候使用,和我们开发无关

5. 寄存器:给cpu使用,和我们开发无关

 

注意:方法区之前是和堆连接在一起的,从JDK8开始,取消方法区,新增元空间;把原来方法区的多种功能进行拆分,有的功能放到了堆当中,有的功能放到了元空间中

 

数组的内存图:

图片[1]-2.4 数组的内存图-IT熊技术站

解释:

首先main方法进栈,开始执行第一行的代码,创建一个名字叫arr的动态数组,并在堆内存中开辟了一个小空间,打印数组其实打印的是数组的地址值,由于没有给数组添加元素,所以一开始打印arr数组中的元素都是int类型默认的0;后面给arr数组0索引和1索引的元素进行赋值,原先的0就被覆盖了,后面打印出来的就是我们赋值的值;然后打印了”———-“, 再创建了一个静态数组arr2,并添加了三个元素,打印数组arr2其实就是打印数组的地址值,最后打印arr2中0索引,1索引和2索引的三个元素

总结:

1. 只要是new出来的一定时在堆里面开辟了一个小空间

2. 如果new可多次,那么堆里面有多个小空间,每个小空间中都有各自的数据

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容