JAVA GC 简单总结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA GC 简单总结相关的知识,希望对你有一定的参考价值。

GC分代

GC的英文全拼是Garbage Collection,意思是垃圾收集。

Java 将堆内存分为三代来管理: - 年轻代 (Young Generation) - 年老代 (Old Generation) - 永久代 (Perm Generation)

年轻代:又分为EdenFromTo,其中FromTo又统称为Survivor Spaces(幸存区)。年轻代大小可以由-Xmn来控制,也可以用-XX:SurvivorRatio来控制EdenSurvivor的比例,使用–XX:NewRatio来指定新生代和年老代的大小比例。

年老代:用来存放多次垃圾回收依然存活的对象。

永久代:来存放方法区。可通过-XX:PermSize-XX:MaxPermSize来指定最小值和最大值。

正常情况下,一个对象从创建到销毁,应该是从Eden,然后到Survivor Spaces(幸存区),再到Old Generation(年老代),最后在某次GC下消失。也可能一个对象直接在Eden里死掉,也可能一直在Old Generation(年老代)存活。

GC种类

Java GC分为两类:

  • Minar GC
  • FULL GC
  • Major GC

Minar GC:从年轻代空间(包括 Eden 和 Survivor 区域)回收内存被称为 Minor GC。

Major GC:是清理老年代。

FULL GC:是清理整个堆空间—包括年轻代和老年代。

GC的时候,会暂停全世界(stop-the-world),意思是停止所有的应用线程,所以要避免不必要的GC已提高性能。

GC日志

-XX:+PrintGCDetails打印日志详情。

-XX:+PrintGCTimeStamps打印时间戳

-Xloggc输出GC日志到文件。

以上是关于JAVA GC 简单总结的主要内容,如果未能解决你的问题,请参考以下文章

面向面试编程代码片段之GC

Java GC(垃圾回收)机制知识总结

JVM GC总结

JVM学习——全面总结Java的GC算法和回收机制---转载自http://www.cnblogs.com/kubixuesheng/p/5208647.html

垃圾收集器与内存分配策略之篇三:理解GC日志和垃圾收集器参数总结

垃圾回收机制GC知识再总结兼谈如何用好GC(其他信息: 内存不足)