java 内存模型

本文深入解析Java内存管理,详细对比栈内存和堆内存的特点,阐述它们如何存放不同类型的变量,并解释垃圾回收器如何在堆内存中回收不再使用的对象。通过例子展示Strings=newString(xyz)的内存分配过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java把内存分为栈内存和堆内存。两者的主要区别是:

栈内存

堆内存

存放内容

(1)在函数中定义的基本类型变量

(2)在函数中定义的对象的引用变量

new产生的对象和数组

回收方式

自动回收:在函数体(即在{}之内)中定义的变量,如果超过了函数体,将自动回收。

由垃圾回收器回收。

栈内存,堆内存和垃圾回收器的关系

在堆中分配内存给新产生对象或者数组的同时,还在栈中产生一个特殊变量,这个特殊变量的取值等于对象或者数组在堆内存中的首地址。当这个特殊变量超过了函数体{},被自动回收后,那么在堆中分配的那块儿内存就变成了垃圾。这个时候就可以启动垃圾回收器进行回收了。

例如,说出Strings =newString("xyz")的内存分配形式?

答案:在堆内存开辟为对象"xyz"开辟内存,在栈内存创建引用变量s,指向对象"xyz"。


感谢金丝燕大学校长

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值