jubincn

导航

深入理解Java虚拟机 -- 读书笔记(4):内存分配策略

本系列为《深入理解Java虚拟机 》(周志明著)读书笔记

VM的内存分配机制大致遵循这几个原则:

  • 对象优先在Eden分配
大多数情况下,对象中新生代的Eden区分配。当Eden区没有足够的内存时,JVM将发起一次Minor GC。
  • 大对象直接进入老年代
这里的大对象指需要大量连续内存空间的对象,最典型的就是很长的字符串和各种数组。虚拟机提供了一个-XX:PretenureSizeThreshhold参数,令大于这个值的对象直接进入老年代。
  • 长期存活的对象进入老年代
JVM给每个对象定义了一个年龄(Age)计数器。如果对象中Eden出生并且经历一次Minor GC后仍然存活,并能被Survivor接纳的话,此对象将被移动到Survivor空间中,并将年龄设为1。对象在Survivor中每经历一次Minor GC,其年龄将增加1。当对象到达一定年龄时(默认为15),就会被晋升到老年代中。这个界限可以通过-XX:MaxTenuringThreshold来设置。

posted on 2013-03-04 00:06  jubincn  阅读(123)  评论(0编辑  收藏  举报