Java入门之了解JVM(33)

什么情况会出发Full GC?

老年代被写满方法去被写满程序主动调用System.gc()生效(主动Full GC)老年代

用于存放大岁数的对象和一些大对象(如数组这些内存连续的对象)因为老年代中存放的对象都是些长寿对象,即出现垃圾的机会是远小于新生代的,所以采用的是标记-整理算法当老年代将要满的时候,会触发Major GC,如果老年代被写满则会触发Full GC一般采用标记-清除和标记-整理两种垃圾回收算法了解一下目前JVM中都有哪些GC收集器

client模式和server模式

在了解GC之前,先简单了解以下JVM的运行模式,JVM运行模式分为两种:server 和 client

client模式

在该模式下运行应用,JVM会尽量减少GC的回收时间来避免用户觉得卡顿,且使用C1即时编译器(编译速度快,针对客户端体验)

server模式

64位JDK默认模式,可以提高程序的吞吐量,即单位时间内能够尽量处理更多的请求,所以GC执行时间就会比client模式下的时间要长,因为GC执行的间隔延长了,就代表这段时间堆积的对象多了,固然清除花费的时间就相对较多,且使用C2编译器(编译时间比C1长,但比C1编译的内容更高效)

推荐阅读