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

溫馨提示×

溫馨提示×

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

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

Java垃圾回收器的定義及算法

發布時間:2021-08-24 21:22:17 來源:億速云 閱讀:190 作者:chen 欄目:編程語言

本篇內容主要講解“Java垃圾回收器的定義及算法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Java垃圾回收器的定義及算法”吧!

1、Java垃圾回收器的定義

Java垃圾回收器是Java虛擬機(JVM)的三個重要模塊(另外兩個是解釋器和多線程機制)之一,為應用程序提供內存的自動分配(Memory Allocation)、自動回收(Garbage Collect)功能,這兩個操作都發生在Java堆上(一段內存快)。某一個時點,一個對象如果有一個以上的引用(Rreference)指向它,那么該對象就為活著的(Live),否則死亡(Dead),視為垃圾,可被垃圾回收器回收再利用。垃圾回收操作需要消耗CPU、線程、時間等資源,所以容易理解的是垃圾回收操作不是實時的發生(對象死亡馬上釋放),當內存消耗完或者是達到某一個指標(Threshold,使用內存占總內存的比列,比如0.75)時,觸發垃圾回收操作。有一個對象死亡的例外,java.lang.Thread類型的對象即使沒有引用,只要線程還在運行,就不會被回收。

2、Java垃圾回收器的性能評估工具

–XX:+PrintGCDetails和–XX:+PrintGCTimeStamps

垃圾回收的開始時間,持續時間,每一代的空余內存等信息。

jmap [options] pid

jamp 2043 查看2043進程里面已經加載的共享對象。通常DLL文件。

jmap -heap 2043 查看內存堆的配置信息以及使用情況。

jmap -permstat 2043 查看永久代的加載情況。

jmap -histo 2043 查看類的加載和內存占用情況。

jstat [options] pid

jstat -class 2043 class加載、卸載、內存占用情況。

jstat -gc 2043 GC執行情況。

3、垃圾回收算法

(1)標記清除算法

標記清除算法分成兩步,第一步,標記要回收的垃圾對象,第二步就是清除被標記的垃圾對象. 標記清除算法會產生大量的內存碎片,而且效率低.所以,為了解決這個問題,出現了復制清除算法.

(2)復制清除算法(專門用于處理年輕代垃圾的)

所謂復制清除算法,就是在要進行垃圾回收的時候,先將活著的對象整齊的復制到一塊空閑區域,然后再將原來的區域的垃圾全部清除. 復制清除算法的優點:效率高于標記清除算法,活著的對象是整齊排列的,沒有內存碎片. 但是這個方法的缺點也很明顯,那就是浪費空間.

(3)標記清理算法(年老代)

將活著的對象一個接一個的按順序排好,然后再清除變成垃圾的對象.這種方法不會造成碎片,也不會造成內存的浪費.但是效率不高.所以,這種方法不適合在年輕代使用,而是在對象生命力很頑強的年老代使用

(4)分類算法

所謂分類算法,就是根據內存的不同,采用不同的垃圾回收方式(上面的1,2,3)進行垃圾回收.

4、典型的垃圾收集器
  

(1)Serial/Serial Old
  

Serial/Serial Old收集器是最基本最古老的收集器,它是一個單線程收集器,并且在它進行垃圾收集時,必須暫停所有用戶線程。Serial收集器是針對新生代的收集器,采用的是Copying算法,Serial Old收集器是針對老年代的收集器,采用的是Mark-Compact算法。它的優點是實現簡單高效,但是缺點是會給用戶帶來停頓。

(2)ParNew
  

ParNew收集器是Serial收集器的多線程版本,使用多個線程進行垃圾收集。

(3)Parallel Scavenge
  

Parallel Scavenge收集器是一個新生代的多線程收集器(并行收集器),它在回收期間不需要暫停其他用戶線程,其采用的是Copying算法,該收集器與前兩個收集器有所不同,它主要是為了達到一個可控的吞吐量。

(4)Parallel Old
  

Parallel Old是Parallel Scavenge收集器的老年代版本(并行收集器),使用多線程和Mark-Compact算法。

(5)CMS
  

CMS(Current Mark Sweep)收集器是一種以獲取最短回收停頓時間為目標的收集器,它是一種并發收集器,采用的是Mark-Sweep算法。

(6)G1
  

G1收集器是當今收集器技術發展最前沿的成果,它是一款面向服務端應用的收集器,它能充分利用多CPU、多核環境。因此它是一款并行與并發收集器,并且它能建立可預測的停頓時間模型。

到此,相信大家對“Java垃圾回收器的定義及算法”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

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

AI

衡阳县| 天镇县| 龙门县| 家居| 苗栗市| 宁陕县| 永善县| 蓝田县| 连州市| 根河市| 临清市| 涪陵区| 白河县| 沁水县| 桦南县| 郴州市| 双牌县| 山阳县| 黑水县| 日喀则市| 湘阴县| 尉氏县| 当阳市| 平湖市| 卢氏县| 连云港市| 永善县| 乡城县| 寻乌县| 木里| 九龙坡区| 嘉兴市| 五家渠市| 贵定县| 温州市| 乌兰察布市| 九龙县| 名山县| 武强县| 舞阳县| 桓仁|