JVM内存分配策略--内存分配

版权声明: https://blog.csdn.net/qq_16525279/article/details/82012191

Java技术体系中的自动内存管理解决了两个问题:给对象分配内存以及回收分配给对象的内存。

关于回收内存,之前的文章提到了对象已死吗(对象存活判定算法回收方法区)和垃圾收集算法

对象的内存分配,往大方向讲,就是在堆上分配(但也可能经过JIT编译后被拆散为标量类型并间接地栈上分配),对象主要分配在新生代的Eden区上,如果启动了本地线程分配缓存,将按线程优先在TLAB上分配。少数情况有可能会直接分配在老年代中,其细节取决于当前使用的是哪一种垃圾收集器组合,还有虚拟机中与内存相关的参数的设置。

内存分配规则

对象优先在Eden分配

大对象直接进入老年代

长期存活的对象将进入老年代

动态对象年龄判定

空间分配担保

参考自:《深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)》周志明

猜你喜欢

转载自blog.csdn.net/qq_16525279/article/details/82012191