数组内存图和对象内存图

2.1 Java虚拟机的内存划分

为了提高运算效率,就对空间进行了不同区域的划分

因为每一片区域都有特定的处理数据方式和内存管理方式

JVM的内存划分

在这里插入图片描述

2.2数组在内存中的存放

一个数组内存图

int [] array 数组的名称就是变量

new出来的内容,都是在堆内存中存储的,而方法中的变量保存的就是数组的地址

new出来的数组是在堆heap当中的,而数组变量是在栈stack当中的,而栈中变量存储的就是地址值

有了这个地址值就可以找到数组。

System.out.println(array) 输出的就是数组的地址值

执行流程:

在这里插入图片描述
在这里插入图片描述

两个数组内存图

在这里插入图片描述

在这里插入图片描述

两个变量指向一个数组

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.1 对象内存图

1一个对象调用一个方法内存图

main()方法先进栈,call()方法再进栈,然后是sendMessage()方法进栈

调用call方法,运行完后立即弹栈,即从栈内存当中消失

sendMessage方法进栈,运行完后立即从栈空间消失

最后到达main方法最后一行,main方法运行完后也出栈

所有内存不见,程序停止。

在栈内存中运行的非方法,遵循“先进后出,后进先出”的原则

成员方法保存的是地址值

在这里插入图片描述

2两个对象调用同一方法内存图

对象调用方法时,根据对象中方法标记(地址值),去类中寻找方法信息。这样哪怕是多个对象,方法信息只保存一份,节约内存空间

在这里插入图片描述

3两个引用指向同一个对象内存图

引用类型作为参数,传递的是地址值

在这里插入图片描述

4使用对象类型作为参数传递到方法内存图

在这里插入图片描述

5使用对象类型作为方法的返回值

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值