jvm元空间与堆和栈的区别

更新时间:02-09 教程 由 灭队 分享

jvm元空间与堆和栈的区别?

1内存分配策略

1)静态存储:编译时确定每个数据目标在运行时的存储空间需求(代码中无可变数据结构无嵌套递归)。

2)栈式存储:数据需求在编译时未知,运行时模块入口确定,动态分配存储,在运行中进入一个程序模块时,必须知道该程序模块所需要的数据区的大小才能分派其内存。

3)堆式存储:编译时和运行时模块入口无法确定,动态分配。

2Java内存模型中的堆与栈

1)二者联系:引用对象、数组时栈里定义的变量保存的是堆中目标的首地址。

2)二者区别:

(1)管理方式:栈自动释放(对应方法执行完毕),堆需要GC(垃圾回收机制)

(2)空间大小:堆比栈大。

(3)碎片:栈产生的碎片远小于堆产生的碎片。

(4)分配方式:栈支持静态和动态分配,堆只能动态分配。

(5)效率:堆比栈的效率低。

(6)栈为线程私有,堆为线程共享。

声明:关于《jvm元空间与堆和栈的区别》以上内容仅供参考,若您的权利被侵害,请联系13825271@qq.com
本文网址:http://www.25820.com/tutorial/14_2203018.html