java應(yīng)用開發(fā)之JVM運(yùn)行時(shí)內(nèi)存分析
1.JVM的運(yùn)行時(shí)內(nèi)存也叫JVM堆
從GC的角度可以將JVM分為新生代,老年代,永久代。其中新生代默認(rèn)占1/3的堆內(nèi)存空間,老年代默認(rèn)占2/3內(nèi)存空間,永久代占非常少的堆內(nèi)存空間方式。
而新生代分為Eden,SurvivorFrom,SurvivorTo區(qū),Eden默認(rèn)占8/10新生代區(qū)域空間,SurviorFrom和SurviorTo則占1/10.

2.JVM新創(chuàng)建的對象
JVM新創(chuàng)建的對象,除了大對象外都會放在新生代中,由于JVM會頻繁創(chuàng)建對象,所以新生代會頻繁出發(fā)MinorGC進(jìn)行垃圾回收。
3.新生代詳解
- Java新創(chuàng)建的對象先放在Eden區(qū),如是大對象則分配到老年區(qū)。
- Eden區(qū)內(nèi)存空間不足時(shí)則觸發(fā)GC對新生代進(jìn)行一次垃圾回收
- SurviorTo保存上一次MinorGC的幸存者
- SuviorFrom將上一次MinorGC作為這一次的掃描對象
4.老年代詳解
老年代則不會頻繁出發(fā)MajorGC,當(dāng)MinorGC過后仍然出現(xiàn)老年代空間不足,則會觸發(fā)MajorGC進(jìn)行垃圾回收。MajorGC采用的是標(biāo)記清除算法。因?yàn)橐獟呙枥夏甏袑ο?,所以耗時(shí)較長。
5.永久代
指的是內(nèi)存永久保存區(qū)域,主要存放Class和Meta(元數(shù)據(jù))。
以上就是java應(yīng)用開發(fā)之JVM運(yùn)行時(shí)內(nèi)存分析的詳細(xì)內(nèi)容,更多關(guān)于JVM運(yùn)行時(shí)內(nèi)存的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
解決IDEA中Maven依賴包導(dǎo)入失敗報(bào)紅問題(總結(jié)最有效8種解決方案)
這篇文章主要介紹了解決IDEA中Maven依賴包導(dǎo)入失敗報(bào)紅問題,本文通過圖文詳解給大家總結(jié)了最有效的8種解決方法,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
Spring實(shí)戰(zhàn)之Bean定義中的SpEL表達(dá)式語言支持操作示例
這篇文章主要介紹了Spring實(shí)戰(zhàn)之Bean定義中的SpEL表達(dá)式語言支持操作,結(jié)合實(shí)例形式分析了Bean定義中的SpEL表達(dá)式語言操作步驟與實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-12-12
Spring Cache自定義緩存key和過期時(shí)間的實(shí)現(xiàn)代碼
使用 Redis的客戶端 Spring Cache時(shí),會發(fā)現(xiàn)生成 key中會多出一個(gè)冒號,而且有一個(gè)空節(jié)點(diǎn)的存在,查看源碼可知,這是因?yàn)?nbsp;Spring Cache默認(rèn)生成key的策略就是通過兩個(gè)冒號來拼接,本文給大家介紹了Spring Cache自定義緩存key和過期時(shí)間的實(shí)現(xiàn),需要的朋友可以參考下2024-05-05
SpringBoot中自定義注解實(shí)現(xiàn)參數(shù)非空校驗(yàn)的示例
這篇文章主要介紹了SpringBoot中自定義注解實(shí)現(xiàn)參數(shù)非空校驗(yàn),幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下2020-11-11
Spring?Boot獲取resources目錄下的文件三種方式詳解
在Spring?Boot項(xiàng)目中,經(jīng)常需要獲取resources目錄下的文件,這些文件可以包括配置文件、模板文件、靜態(tài)資源等,這篇文章主要介紹了Spring?Boot獲取resources目錄下的文件的三種方式,需要的朋友可以參考下2023-06-06
@Scheduled 如何讀取動(dòng)態(tài)配置文件
這篇文章主要介紹了@Scheduled 如何讀取動(dòng)態(tài)配置文件的操作,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06

