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)橐獟呙枥夏甏袑ο螅院臅r(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)文章
springboot+vue實(shí)現(xiàn)頁面下載文件
這篇文章主要為大家詳細(xì)介紹了springboot+vue實(shí)現(xiàn)頁面下載文件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-12-12詳解Spring Data JPA中Repository的接口查詢方法
repository代理有兩種方式從方法名中派生出特定存儲查詢:通過直接從方法名派生查詢和通過使用一個(gè)手動定義的查詢。本文將通過示例詳細(xì)講解Spring Data JPA中Repository的接口查詢方法,需要的可以參考一下2022-04-04IDEA2023 Maven3.9.1+Tomcat10.1.8配置并搭建Servlet5.0的框架實(shí)現(xiàn)
本文主要介紹了IDEA2023 Maven3.9.1+Tomcat10.1.8配置并搭建Servlet5.0的框架實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07java實(shí)現(xiàn)多線程的兩種方式繼承Thread類和實(shí)現(xiàn)Runnable接口的方法
下面小編就為大家?guī)硪黄猨ava實(shí)現(xiàn)多線程的兩種方式繼承Thread類和實(shí)現(xiàn)Runnable接口的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-09-09如何將java或javaweb項(xiàng)目打包為jar包或war包
本文主要介紹了如何將java或javaweb項(xiàng)目打包為jar包或war包,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07RestTemplate發(fā)送HTTP?GET請求使用方法詳解
這篇文章主要為大家介紹了關(guān)于RestTemplate發(fā)送HTTP?GET請求的使用方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家<BR>33+多多進(jìn)步2022-03-03