代码改变世界

java内存分配策略

2017-05-20 16:34  fengna  阅读(295)  评论(0编辑  收藏  举报

对象的内存分配,从大方向将就是在堆上分配,对象主要分配在新生代的Eden区上,如果启动了本地线程分配缓存,将按线程优先在TLAB上分配。

1. 对象优先在Eden区分配:大多数情况下,对象在新生代Eden区中分配。

2. 大对象直接进入老年代:这里的大对象是指需要大量连续内存空间的java对象,例如很长的字符串以及数组

3. 长期存活的对象将进入老年代:一定次数的Minor GC后仍然存活的对象,将进入老年代

4. 动态对象年龄判定:为了动态更好地适应不同程序的内存状况,虚拟机并不是永远地要求对象的年龄必须达到了MaxTenuringThershod才能晋升为老年代

5. 空间分配担保