中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

簡單了解Java垃圾回收器的種類

發布時間:2020-09-18 05:50:22 來源:腳本之家 閱讀:156 作者:mengwei 欄目:編程語言

在這篇教程中我們將學習幾種現有的垃圾回收器。在Java中,垃圾回收是一個自動的進程可以替代程序員進行內存的分配與回收這些復雜的工作。這篇是垃圾回 收教程系列的第三篇,在前面的第2部分我們看到了在Java中垃圾回收是如何工作的,那是篇有意思的文章,我推薦你去看一下。第一部分介紹了Java的垃圾回收,主要有JVM體系結構,堆內存模型和一些Java術語。

Java有四種類型的垃圾回收器:

串行垃圾回收器(Serial Garbage Collector)
并行垃圾回收器(Parallel Garbage Collector)
并發標記掃描垃圾回收器(CMS Garbage Collector)
G1垃圾回收器(G1 Garbage Collector)

簡單了解Java垃圾回收器的種類

每種類型都有自己的優勢與劣勢。重要的是,我們編程的時候可以通過JVM選擇垃圾回收器類型。我們通過向JVM傳遞參數進行選擇。每種類型在很大程度上有所不同并且可以為我們提供完全不同的應用程序性能。理解每種類型的垃圾回收器并且根據應用程序選擇進行正確的選擇是非常重要的。

1、串行垃圾回收器

串行垃圾回收器通過持有應用程序所有的線程進行工作。它為單線程環境設計,只使用一個單獨的線程進行垃圾回收,通過凍結所有應用程序線程進行工作,所以可能不適合服務器環境。它最適合的是簡單的命令行程序。

通過JVM參數-XX:+UseSerialGC可以使用串行垃圾回收器。

2、并行垃圾回收器

并行垃圾回收器也叫做throughputcollector。它是JVM的默認垃圾回收器。與串行垃圾回收器不同,它使用多線程進行垃圾回收。相似的是,它也會凍結所有的應用程序線程當執行垃圾回收的時候

3、并發標記掃描垃圾回收器

并發標記垃圾回收使用多線程掃描堆內存,標記需要清理的實例并且清理被標記過的實例。并發標記垃圾回收器只會在下面兩種情況持有應用程序所有線程。

當標記的引用對象在tenured區域;

在進行垃圾回收的時候,堆內存的數據被并發的改變。

相比并行垃圾回收器,并發標記掃描垃圾回收器使用更多的CPU來確保程序的吞吐量。如果我們可以為了更好的程序性能分配更多的CPU,那么并發標記上掃描垃圾回收器是更好的選擇相比并發垃圾回收器。

通過JVM參數XX:+USeParNewGC打開并發標記掃描垃圾回收器。

4、G1垃圾回收器

G1垃圾回收器適用于堆內存很大的情況,他將堆內存分割成不同的區域,并且并發的對其進行垃圾回收。G1也可以在回收內存之后對剩余的堆內存空間進行壓縮。并發掃描標記垃圾回收器在STW情況下壓縮內存。G1垃圾回收會優先選擇第一塊垃圾最多的區域

通過JVM參數–XX:+UseG1GC使用G1垃圾回收器

Java8的新特性

在使用G1垃圾回收器的時候,通過JVM參數-XX:+UseStringDeduplication。我們可以通過刪除重復的字符串,只保留一個char[]來優化堆內存。這個選擇在Java8u20被引入。

我們給出了全部的四種Java垃圾回收器,需要根據應用場景,硬件性能和吞吐量需求來決定使用哪一種。

垃圾回收的JVM配置

下面的JVM關鍵配置都與Java垃圾回收有關。

運行的垃圾回收器類型

配置 描述
-XX:+UseSerialGC 串行垃圾回收器
-XX:+UseParallelGC 并行垃圾回收器
-XX:+UseConcMarkSweepGC 并發標記掃描垃圾回收器
-XX:ParallelCMSThreads= 并發標記掃描垃圾回收器 =為使用的線程數量
-XX:+UseG1GC G1垃圾回收器

GC的優化配置

配置 描述
-Xms 初始化堆內存大小
-Xmx 堆內存最大值
-Xmn 新生代大小
-XX:PermSize 初始化永久代大小
-XX:MaxPermSize 永久代最大容量

使用JVM GC參數的例子

java -Xmx12m -Xms3m -Xmn1m -XX:PermSize=20m -XX:MaxPermSize=20m -XX:+UseSerialGC -jar java-application.jar

總結

以上就是本文關于簡單了解Java垃圾回收器的種類的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

沅陵县| 宁安市| 西青区| 城口县| 固原市| 金堂县| 黄冈市| 金溪县| 卢湾区| 东光县| 册亨县| 芜湖市| 米脂县| 灌云县| 屯昌县| 赤壁市| 南部县| 辽宁省| 塔河县| 明溪县| 新兴县| 灌阳县| 天水市| 车致| 巍山| 大同市| 虹口区| 铁岭市| 溧水县| 黔东| 邯郸县| 三江| 剑河县| 鹤山市| 海城市| 托克逊县| 白河县| 丹江口市| 沧州市| 织金县| 杭锦旗|