Java中的内存与分配

在Java中,将内存划分为 堆内存 和 栈内存 两种。

栈内存分配原则:
在Java中,函数中定义的一些 “基本类型” 的 变量 和 对象 的 引用变量 都是在函数的“栈内存”中为这个变量
分配内存空间,当超过变量的“作用域”后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。

堆内存分配原则:
堆内存用来存放有 new 关键字创建的对象和数组,在堆内存中分配内存,有Java虚拟机的“自动垃圾回收器”来管理。
在堆内存中产生了一个数组或对象后,还可以在栈中定义一个特殊的变量,让栈中的这个变量的取值等于数组或对象在堆中的
“首地址”,栈中的这个变量就成了 数组或对象 的 “引用变量”,以后就可以在程序中使用栈中的引用变量来访问堆中的
数组或对象,引用变量就相当于是为数组或对象起的一个名称(代号)。

“引用变量”(也可以叫做“指针变量”)是普通的变量,定义时在栈中分配,引用变量在程序运行到其作用域外之后被释放。而数组和对象本身在
“堆内存”中分配,即使程序运行到使用 new 产生的数组和对象的语句所在的代码之外,数组和对象本身所占据的内存不会
被释放,当数组和对象在没有“引用变量”指向它时,才会变为垃圾,不能再被使用,但仍然占据内存空间不放,在随后一个
“不确定”的时间被“垃圾回收器”收走(释放掉)。这也是Java比较占内存的原因。
----摘自:张孝祥《Java就业培训教程》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值