2016 - 2024

感恩一路有你

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

浏览量:4741 时间:2022-12-19 19:54:27 作者:采采

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

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

1内存分配策略

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

2)堆栈存储:编译时数据需求未知,运行时确定模块入口,动态分配存储。当你在运行时进入一个程序模块时,你必须知道程序模块需要的数据区的大小,然后才能分配它的内存。

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

2Java内存模型中的堆和栈

1)它们之间的联系:引用对象和数组时,栈中定义的变量存储的是堆中目标的第一个地址。

2)两者的区别:

(1)管理模式:栈自动释放(对应方法完成),栈需要GC(垃圾收集机制)。

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

(3)碎片:堆栈产生的碎片比堆产生的碎片要小得多。

(4)分配方式:Stack支持静态和动态分配,而heap只能动态分配。

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

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

空间 区别 数据 目标

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。