欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報邀請碼778899分享:java JVM(2)

柚子快報邀請碼778899分享:java JVM(2)

http://yzkb.51969.com/

學習日記-JVM(2)

主管程序的運行,生命周期和線程同步對于棧來說,不存在垃圾回收8大基本類型+對象引用+實例的方法

堆(Heap)

一個jvm只有一個堆內存,堆內存大小是可以調節(jié)的堆內存分為三個區(qū)域:新生區(qū)(伊甸園區(qū),幸存區(qū)0區(qū),幸村區(qū)1區(qū)),養(yǎng)老區(qū)(老年代),永久區(qū)(jdk1.8后改為元空間)堆內存滿了,會產生OOM錯誤

新生區(qū)

類誕生和成長的地方,甚至死亡伊甸園,所有的對象都是在伊甸園區(qū)new出來的,滿了出現一次輕量級垃圾回收

永久區(qū)

常駐內存,用來存放jdk自身攜帶的class對象,interface元數據,存儲一些java運行時環(huán)境和類信息,這個區(qū)域不存在垃圾回收jdk1.6之前:永久代,常量池在方法區(qū)jdk1.7:永久代,慢慢退化,出現去永久代,常量池在堆中jdk1.8:無永久代,常量池在堆中

Jprofiler

分析dump文件,快速定位內存泄漏獲取堆中的數據,獲得大的對象等

垃圾回收(GC)

JVM GC只回收堆區(qū)和方法區(qū)內的基本類型數據和對象。回收:對象沒有引用了或者對象不可達怎么判斷對象是否存活?常見的有兩種算法,分別是 引用計數法 和 可達性分析法

引用計數法

在對象里添加一個被引用的計數器,每當有地方引用了它,計數器就加1,引用失效時,計數器就減1。在觸發(fā)回收內存的時候,遍歷所有對象,把計數器值等于0的找出來,釋放掉即可。無法回收互相引用的對象

標記 - 清除算法

首先標記出所有存活的對象,再掃描整個空間中未被標記的對象直接回收。標記的是“存活”的對象,再進行清除,只需要兩個步驟即可:

先通過可達性分析法,通過根對象(GC Roots)順著引用鏈先把這些存活對象都標出來遍歷這個區(qū)域所有對象,把沒標記存活的對象,直接清理掉即可。 缺點:由于回收后沒有進行整理的操作,所以會存在內存空間碎片化的問題

標記 - 復制算法(新生區(qū))

常規(guī)的復制算法,是把內存分成兩塊大小相同的空間(1 : 1),每次只使用其中一塊,當使用中的這塊內存用完了,就把存活的對象移動到另一塊內存中,再把使用過的這塊內存空間一次性清理掉標記-復制算法,在這個基礎之上對其進行了優(yōu)化,IBM曾有過一項針對新生代的研究,結論是絕大多數情況下,新生代區(qū)域里的對象有98%都熬不過第一次回收。所以不需要按照 1 : 1 的比例來實現復制算法,而是可以按照 8 : 1 : 1 的比例來分配內存空間,也就是一個80%的Eden空間和兩個10%的Survivor空間。每次分配內存,只使用Eden和其中一塊Survivor空間,發(fā)生GC回收時,把Eden和其中一塊Survivor空間中存活的對象,復制到另一塊空閑的Survivor空間,然后直接把Eden和使用過的那塊Survivor空間清理掉。

標記 - 整理算法(老年區(qū))

標記-清除算法會產生內存碎片,不適合哪些需要大量連續(xù)內存空間的場景,而標記-整理算法,就是在其基礎之上,增加了整理這個操作,去解決這些內存空間碎片化的問題和標記-清除算法一樣,先標記,但清除之前,會先進行整理,把所有存活的對象往內存空間的左邊移動,然后清理掉存活對象邊界以外的內存,即完成了清除的操作。標記-整理 算法是在 標記-清除 算法之上,又進行了對象的移動排序整理,因此成本更高,但卻解決了內存碎片的問題。老年代里的對象存活率很高,不適合使用標記-復制的算法。而且老年代存儲大對象的概率要比新生代大很多,這些大對象需要連續(xù)的內存空間來存儲,標記-清除這個算法也不適合。所以大多數的老年代都采用標記-整理來作為這個區(qū)域的回收算法。

柚子快報邀請碼778899分享:java JVM(2)

http://yzkb.51969.com/

文章來源

評論可見,查看隱藏內容

本文內容根據網絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。

轉載請注明,如有侵權,聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19083849.html

發(fā)布評論

您暫未設置收款碼

請在主題配置——文章設置里上傳

掃描二維碼手機訪問

文章目錄