1、对象的内存分配往大的方向说就是在java堆上分配,对象主要分配在新生代的Eden区上,如果启动了本地线程分配缓冲,将按照线程优先分配在tlab上分配。少数情况下可能直接分配在老年代中,其细节取决于哪一种垃圾收集器组合,还有虚拟机中和内存相关的参数设置。其他几种内存分配方法是2、对象优先分配在Eden区,大多数情况下新生代分配在eden去,如果区没有足够的内存空间,虚拟机将发起GC;3、大对象直接进入老年代,所谓大对象就是大量连续内存空间的java对象,那种很长得字符串以及数组。4、长期存活的对象将进入老年代(新老年代的区分标准,虚拟机给每个对象定义了一个对象age计数器,如果对象在Eden区出生并经过第一次GC后仍然存活,并且被survivor容纳的话,将被移动到survivor空间中,并且对象年龄设为1,对象在survivor去每熬过一次GC,年龄加1,默认15,就将升级到老年代)。5、动态对象年龄判定
内存分配和回收策略
最新推荐文章于 2024-07-28 19:06:17 发布