堆和栈

其中堆和栈的区别可以从四个角度进行回答:存储、速度、线程、垃圾回收

一、存储

stack      ---- 存储 ---->  java基本变量、引用变量 (string,数组,class等)  

heap(堆) ---- 存储 --->  实例对象(使用new关键字的对象)

借助代码理解:

对于Object obj=new Object(); 其中obj存储在栈中,后面是用来new,所以等号右边的存储在堆中,其中obj指向所创建的实例

上面变量存储的简单示意图:

二、存储速度

stack ----->存储速度快    (主要是基本变量和对象的引用,其中编译期间就能分配内存)

heap----->存储速度比较慢   (在程序运行之后对象才能建立起来,堆才能动态分配内存)

注:栈的空间比较小,堆的空间比较大

三、线程访问

stack ----->每个线程都有一个栈   

heap----->所有线程共享一个堆  

四、垃圾回收(GC)

stack --------->较为频繁   (一般是一个方法结束后)

heap ----------> 不频繁

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值