java空间(jvm元空间与堆和栈的区别?)
浏览量:4741
时间:2022-12-19 19:54:27
作者:采采
jvm元空间与堆和栈的区别?
1内存分配策略
1)静态存储:在编译时确定每个数据目标在运行时的存储空间需求(代码中没有不可变的数据结构,没有嵌套递归)。
2)堆栈存储:编译时数据需求未知,运行时确定模块入口,动态分配存储。当你在运行时进入一个程序模块时,你必须知道程序模块需要的数据区的大小,然后才能分配它的内存。
3)堆存储:编译时和运行时无法确定模块入口,动态分配。
2Java内存模型中的堆和栈
1)它们之间的联系:引用对象和数组时,栈中定义的变量存储的是堆中目标的第一个地址。
2)两者的区别:
(1)管理模式:栈自动释放(对应方法完成),栈需要GC(垃圾收集机制)。
(2)空间大小:堆大于栈。
(3)碎片:堆栈产生的碎片比堆产生的碎片要小得多。
(4)分配方式:Stack支持静态和动态分配,而heap只能动态分配。
(5)效率:堆比栈效率低。
(6)栈是线程私有的,堆是线程共享的。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。