java栈内存和堆内存的区别?

1.栈内存主要存放的是基本数据类型和引用变量。

2.堆内存主要存放的是new出来的对象和数组。

3.引用变量指的是new出来的对象或数组在栈内存中的地址,换句话说,就是每一个堆内存中的变量在栈内存中都存放着一个地址,通过这个地址可以访问到堆内存中的变量。

4.c语言可以通过指针访问堆内存中的变量,而java只能通过访问栈内存中的引用变量进而获取堆内存中的变量。

5.栈内存中存放的变量在代码执行过这个变量的作用域会自动被释放出来,而堆内存中的变量不会被自动释放,而是在没有栈内存中的引用变量指向堆内存的变量时,堆内存中的变量才会变成垃圾,进而在随后一个不确定的时间被java虚拟机自动垃圾回收器释放掉。

以上几点是基于个人简单地理解,欢迎各位大佬指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值