【JVM】垃圾回收器总结(1)

垃圾回收器 V.S. 垃圾回收算法

垃圾回收算法有四种,分别是引用计数(已经不用了)、复制拷贝、标记清除、标记整理。一般的实现采用分代回收算法,根据不同代的特点应用不同的算法。垃圾回收算法是内存回收的方法论。垃圾回收器是算法的落地实现。和回收算法一样,目前还没有出现完美的收集器,而是要根据具体的应用场景选择最合适的收集器,进行分代收集。

四大垃圾回收方式

串行垃圾回收(Serial)

串行垃圾回收是为单线程环境设计且只使用一个线程进行垃圾回收,会暂停所有的用户线程,不适合交互性强的服务器环境。

并行垃圾回收(Parallel)

多个垃圾收集器线程并行工作,同样会暂停用户线程,适用于科学计算、大数据后台处理等多交互场景。

并发垃圾回收(CMS)

用户线程和垃圾回收线程同时执行,不一定是并行的,可能是交替执行,可能一边垃圾回收,一边运行应用线程,不需要停顿用户线程,互联网应用程序中经常使用,适用对响应时间有要求的场景。

G1垃圾回收

G1垃圾回收器将堆内存分割成不同的区域然后并发地对其进行垃圾回收。

 

七种垃圾回收器类型

七种垃圾回收器:UseSerialOldGC(已经废弃)、UseSerialGC、UseParallelGC、UseConcMarkSweepGC、UseParNewGC、UseParOldGC、UserG1GC。

SerialOldGC、ParOldGC、CMS用于老年代,SerialGC、ParallelGC、ParNewGC用于年轻代,G1两个代都能用。画叉的Java8不推荐使用了。

如何查看JVM默认的垃圾回收器?

使用命令:java -XX:+PrintCommandLineFlags -version

Java11默认使用的是G1垃圾回收器

 

Java8默认使用的是并行垃圾回收器

 

posted @ 2020-06-03 22:15  xd会飞的猫  阅读(261)  评论(0编辑  收藏  举报