JavaSE基础六-内存图

Java内存划分:

 

1.对象,引用,指针

如:Person p = new Person();

解释:所有变量名都放在栈中(类似索引),所有值都放在堆中(按索引取值)。new Person()创建了一个实例对象,将实例对象赋给变量p,p会放在栈中,而该实例对象的所有成员变量的值都放在堆中,引用变量会指向对应堆取值。

 

2.实例:

下面为两个测试类:

在方法区,有两个类的成员变量和方法,下面先对实例对象one说明:

内存中有堆,栈,还有方法区

开始运行,首先是main()方法开始执行

在main中首先new一个实例给了one变量,即变量存放于栈中

然后实例对象的值都放在堆中,one指向对应的堆

然后在堆中,方法只能建立索引(存储地址),即方法索引指向方法区的某一地址

然后,在main()中,对实例对象的变量值重新覆了值

即,程序修改值的时候,根据实例对象one找到原来的堆中值的地址,赋予新的值

调用方法时,方法陆续进栈,等调用完了就出栈

下面为第二个实例对象two

等到main()执行完,main()方法也会出栈,程序结束!


两个引用指向同一个实例对象的情况:

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值