Java JVM and GC

Java JVM and GC

類加載

方法區(qū)

內(nèi)容:類信息和類靜態(tài)變量,常量池

類信息:非常多

主要使用的類信息:1. 類型的字段信息 2. 類型的方法信息

Heap

Java的對(duì)象和數(shù)組申請(qǐng)的空間都是從Heap中分配的。(引用是在棧中)

所有的線程都是共享一個(gè)Heap的。

Stack

保存基本數(shù)據(jù)類型和自定義類型的引用。但是對(duì)于包裝類型:Boolean,Long等存放于Heap中。

每一個(gè)線程都有自己的stack。

本地方法Stack

用于存儲(chǔ)本地方法的局部變量表,和JVM stack功能類似

程序計(jì)數(shù)器

每一個(gè)線程都有獨(dú)立的程序計(jì)數(shù)器

JVM 常量池

存在在方法區(qū)中,存儲(chǔ)的是常量的引用

GC 內(nèi)容

Young generation

新生代空間較小,被分為3個(gè)區(qū)域:Eden,F(xiàn)rom,To三個(gè)區(qū)域。

創(chuàng)建的對(duì)象在Eden區(qū),Eden區(qū)域GC后存活對(duì)象存放在幸存者空間(存放在同一個(gè)幸存者區(qū)間);當(dāng)一個(gè)幸存者空間飽和,還存活的幸存者會(huì)被移動(dòng)到另一個(gè)幸存者空間,然后清零另一個(gè)幸存者空間。如果被一定多次的對(duì)象,就會(huì)被移動(dòng)到老年代。

這里發(fā)生的GC 為Minor GC。

Old generation

大部分內(nèi)容都是由于新生代移動(dòng)過(guò)來(lái)的。

這里發(fā)生的GC為Major GC或者Full GC。

Permanent generation

方法區(qū),保存常量和字符串常量。

GC 算法

根搜索算法:

類似一個(gè)圖遍歷,能夠從root遍歷到的節(jié)點(diǎn)就是不會(huì)被GC。

標(biāo)記清除算法:

掃描,存活對(duì)象進(jìn)行標(biāo)記,不存活對(duì)象進(jìn)行清理。

會(huì)造成內(nèi)存的碎片化。

復(fù)制算法

兩個(gè)空間:活動(dòng)區(qū)間 or 空閑區(qū)間

把存活對(duì)應(yīng)復(fù)制到空間區(qū)間中。一次性回收所有的活動(dòng)區(qū)間中的內(nèi)容。

標(biāo)記-整理算法

類似于標(biāo)記-清除,只是在清除不存活的對(duì)象以后,把存活對(duì)象進(jìn)行移動(dòng),從而使得內(nèi)存碎片化降低。

算法的使用

一般新生帶使用 復(fù)制算法,老生帶一般使用 標(biāo)記-整理算法。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 這篇文章是我之前翻閱了不少的書(shū)籍以及從網(wǎng)絡(luò)上收集的一些資料的整理,因此不免有一些不準(zhǔn)確的地方,同時(shí)不同JDK版本的...
    高廣超閱讀 16,051評(píng)論 3 83
  • 原文閱讀 前言 這段時(shí)間懈怠了,罪過(guò)! 最近看到有同事也開(kāi)始用上了微信公眾號(hào)寫(xiě)博客了,挺好的~給他們點(diǎn)贊,這博客我...
    碼農(nóng)戲碼閱讀 6,150評(píng)論 2 31
  • JVM架構(gòu) 當(dāng)一個(gè)程序啟動(dòng)之前,它的class會(huì)被類裝載器裝入方法區(qū)(Permanent區(qū)),執(zhí)行引擎讀取方法區(qū)的...
    cocohaifang閱讀 1,836評(píng)論 0 7
  • Java 虛擬機(jī)(Java virtual machine,JVM)是運(yùn)行 Java 程序必不可少的機(jī)制。JVM實(shí)...
    Rick617閱讀 961評(píng)論 0 0
  • 1.什么是垃圾回收? 垃圾回收(Garbage Collection)是Java虛擬機(jī)(JVM)垃圾回收器提供...
    簡(jiǎn)欲明心閱讀 90,372評(píng)論 17 311

友情鏈接更多精彩內(nèi)容