java gc种类_Java GC系列(3):垃圾回收器种类
Java有四種類型的垃圾回收器:
串行垃圾回收器(Serial Garbage Collector) 并行垃圾回收器(Parallel Garbage Collector) 并發(fā)標(biāo)記掃描垃圾回收器(CMS Garbage Collector) G1垃圾回收器(G1 Garbage Collector)
每種類型都有自己的優(yōu)勢與劣勢。重要的是,我們編程的時候可以通過JVM選擇垃圾回收器類型。我們通過向JVM傳遞參數(shù)進行選擇。每種類型在很大程度上有 所不同并且可以為我們提供完全不同的應(yīng)用程序性能。理解每種類型的垃圾回收器并且根據(jù)應(yīng)用程序選擇進行正確的選擇是非常重要的。
1、串行垃圾回收器
串行垃圾回收器通過持有應(yīng)用程序所有的線程進行工作。它為單線程環(huán)境設(shè)計,只使用一個單獨的線程進行垃圾回收,通過凍結(jié)所有應(yīng)用程序線程進行工作,所以可能不適合服務(wù)器環(huán)境。它最適合的是簡單的命令行程序。
通過JVM參數(shù)-XX:+UseSerialGC可以使用串行垃圾回收器。
2、并行垃圾回收器
并行垃圾回收器也叫做 throughput collector 。它是JVM的默認垃圾回收器。與串行垃圾回收器不同,它使用多線程進行垃圾回收。相似的是,它也會凍結(jié)所有的應(yīng)用程序線程當(dāng)執(zhí)行垃圾回收的時候
3、并發(fā)標(biāo)記掃描垃圾回收器
并發(fā)標(biāo)記垃圾回收使用多線程掃描堆內(nèi)存,標(biāo)記需要清理的實例并且清理被標(biāo)記過的實例。并發(fā)標(biāo)記垃圾回收器只會在下面兩種情況持有應(yīng)用程序所有線程。
當(dāng)標(biāo)記的引用對象在tenured區(qū)域; 在進行垃圾回收的時候,堆內(nèi)存的數(shù)據(jù)被并發(fā)的改變。 相比并行垃圾回收器,并發(fā)標(biāo)記掃描垃圾回收器使用更多的CPU來確保程序的吞吐量。如果我們可以為了更好的程序性能分配更多的CPU,那么并發(fā)標(biāo)記上掃描垃圾回收器是更好的選擇相比并發(fā)垃圾回收器。
通過JVM參數(shù) XX:+USeParNewGC 打開并發(fā)標(biāo)記掃描垃圾回收器。
4、G1垃圾回收器
G1垃圾回收器適用于堆內(nèi)存很大的情況,他將堆內(nèi)存分割成不同的區(qū)域,并且并發(fā)的對其進行垃圾回收。G1也可以在回收內(nèi)存之后對剩余的堆內(nèi)存空間進行壓縮。并發(fā)掃描標(biāo)記垃圾回收器在STW情況下壓縮內(nèi)存。G1垃圾回收會優(yōu)先選擇第一塊垃圾最多的區(qū)域
通過JVM參數(shù) –XX:+UseG1GC 使用G1垃圾回收器
Java 8 的新特性
在使用G1垃圾回收器的時候,通過 JVM參數(shù) -XX:+UseStringDeduplication 。 我們可以通過刪除重復(fù)的字符串,只保留一個char[]來優(yōu)化堆內(nèi)存。這個選擇在Java 8 u 20被引入。
我們給出了全部的四種Java垃圾回收器,需要根據(jù)應(yīng)用場景,硬件性能和吞吐量需求來決定使用哪一種。
垃圾回收的JVM配置
下面的JVM關(guān)鍵配置都與Java垃圾回收有關(guān)。
運行的垃圾回收器類型
配置 描述
-XX:+UseSerialGC 串行垃圾回收器 -XX:+UseParallelGC 并行垃圾回收器 -XX:+UseConcMarkSweepGC 并發(fā)標(biāo)記掃描垃圾回收器 -XX:ParallelCMSThreads= 并發(fā)標(biāo)記掃描垃圾回收器 =為使用的線程數(shù)量 -XX:+UseG1GC G1垃圾回收器 GC的優(yōu)化配置
配置 描述 -Xms 初始化堆內(nèi)存大小 -Xmx 堆內(nèi)存最大值 -Xmn 新生代大小 -XX:PermSize 初始化永久代大小 -XX:MaxPermSize 永久代最大容量
使用JVM GC參數(shù)的例子
java -Xmx12m -Xms3m -Xmn1m -XX:PermSize=20m -XX:MaxPermSize=20m -XX:+UseSerialGC -jar java-application.jar
在Java垃圾回收教程的下一部分,我們將會用一個Java程序演示如何監(jiān)視和分析垃圾回收。
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的java gc种类_Java GC系列(3):垃圾回收器种类的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cookie获取java_java中如何
- 下一篇: java邮箱设置密送_修改后可以发送附件