如何优化Java垃圾回收机制

我为GC优化概括了两个目的:优化

  1. 一个是将转移到老年代的对象数量降到最少
  2. 另外一个是减小Full GC的执行时间

将转移到老年代的对象数量降到最少对象

按代的GC机制由Oracle JVM提供,不包括能够在JDK7以及更高版本中使用的G1 GC。换句话说,对象被建立在伊甸园空间,然后转化到幸存者空间,最终剩余的对象被送到老年代。某些比较大的对象会在被建立在伊甸园空间后,直接转移到老年代空间。老年代空间上的GC处理会新生代花费更多的时间。所以,减小被移到老年代对象的数据能够显著地减小Full GC的频率。减小被移到老年代空间的对象的数量,可能被误解为将对象留在新生代。可是,这是不可能的。取而代之,你能够调整新生代空间的大小。数据

减小Full GC执行时间时间

Full GC的执行时间比Minor GC要长不少。所以,若是Full GC花费了太多的时间(超过1秒),一些链接的部分可能会发生超时错误。错误

  • 若是你试图经过消减老年代空间来减小Full GC的执行时间,可能会致使OutOfMemoryError 或者 Full GC执行的次数会增长。
  • 与之相反,若是你试图经过增长老年代空间来减小Full GC执行次数,执行时间会增长。

所以,你须要将老年代空间设定为一个“合适”的值。版本

相关文章
相关标签/搜索