摘要:目錄往期博客課堂篇初識(shí)常量池簡(jiǎn)單理解字符串常量池靜態(tài)常量池大整型常量池為什么要了解垃圾收集和內(nèi)存分配如何判斷對(duì)象已死引用計(jì)數(shù)算法可達(dá)性分析算法之后引用的擴(kuò)充回收方法區(qū)垃圾收集算法分代收集理論標(biāo)記清除標(biāo)記復(fù)制標(biāo)記整理對(duì)象分
當(dāng)需要排查各種內(nèi)存溢出、內(nèi)存泄露問(wèn)題時(shí),當(dāng)垃圾收集成為系統(tǒng)達(dá)到高并發(fā)量的瓶頸時(shí),我們必須對(duì)這些“自動(dòng)化”的技術(shù)實(shí)
施必要的監(jiān)控和調(diào)節(jié)。
四種新擴(kuò)充的引用
Object o = new Object()
,只要強(qiáng)引用的關(guān)系還在,垃圾收集器就永遠(yuǎn)不會(huì)回收掉被引用的對(duì)象垃圾收集算法可以劃分為
分代收集設(shè)計(jì)原則
因此存在
算法分為 標(biāo)記 和 清除 兩個(gè)階段
缺點(diǎn)
相比標(biāo)記清除算法
半?yún)^(qū)復(fù)制分代策略
相比于新生代使用標(biāo)記復(fù)制算法、標(biāo)記清除算法
特點(diǎn)
對(duì)象的內(nèi)存分配從概念上講都是堆上分配,(實(shí)際可能有即時(shí)編譯后被拆散為標(biāo)量類型并間接的在棧上分配),在經(jīng)典分代的設(shè)計(jì)下,新生對(duì)象會(huì)直接分布在新生代,一些超過(guò)閾值的大對(duì)象可以直接分布在老年代
-XX:PretenureSizeThreshold=3145728
參數(shù)指定閾值-XXMaxTenuringThreshold
設(shè)置-XX:HandlePromotionFailure
參數(shù)是否允許擔(dān)保失敗,如果允許,則會(huì)檢查老年代可用連續(xù)空間是否大于歷屆上升到老年代對(duì)象年齡的平均大小 -XX:handlePromotionFailure
設(shè)置不允許冒險(xiǎn),這時(shí)候就需要進(jìn)行一次FullGCjsp:虛擬機(jī)進(jìn)程狀況工具
虛擬機(jī)進(jìn)程查看定位工具
jstat:虛擬機(jī)統(tǒng)計(jì)信息監(jiān)視工具
顯示類加載、內(nèi)存、垃圾收集器、即時(shí)編譯等運(yùn)行時(shí)數(shù)據(jù),定位虛擬機(jī)性能問(wèn)題
參數(shù)參考:https://blog.csdn.net/ouyang111222/article/details/53688986
jinfo:Java配置信息工具
jmap:Java內(nèi)存映像工具
用于生成堆轉(zhuǎn)儲(chǔ)快照
jhat:虛擬機(jī)堆轉(zhuǎn)儲(chǔ)快照分析工具
jstack:Java堆棧跟蹤工具
jcmd:Java7開始提供的虛擬機(jī)診斷命令工具
基本Java工具
jhsdb hsdb --pid xxx
進(jìn)行操作文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/119751.html
學(xué)習(xí)JVM的相關(guān)資料 《深入理解Java虛擬機(jī)——JVM高級(jí)特性與最佳實(shí)踐(第2版)》 showImg(https://segmentfault.com/img/bVbsqF5?w=200&h=200); 基于最新JDK1.7,圍繞內(nèi)存管理、執(zhí)行子系統(tǒng)、程序編譯與優(yōu)化、高效并發(fā)等核心主題對(duì)JVM進(jìn)行全面而深入的分析,深刻揭示JVM的工作原理。以實(shí)踐為導(dǎo)向,通過(guò)大量與實(shí)際生產(chǎn)環(huán)境相結(jié)合的案例展示了解...
摘要:虛擬機(jī)性能監(jiān)控與故障處理工具詳解概述本文參考的是周志明的深入理解虛擬機(jī)第四章,為了整理思路,簡(jiǎn)單記錄一下,方便后期查閱。虛擬機(jī)堆轉(zhuǎn)儲(chǔ)快照分析工具功能用于分析生成的。 虛擬機(jī)性能監(jiān)控與故障處理工具 詳解 4.1 概述 本文參考的是周志明的 《深入理解Java虛擬機(jī)》 第四章 ,為了整理思路,簡(jiǎn)單記錄一下,方便后期查閱。 JDK本身提供了很多方便的JVM性能調(diào)優(yōu)監(jiān)控工具,除了集成式的Vis...
摘要:虛擬機(jī)發(fā)展史注本文大部分摘自深入理解虛擬機(jī)第二版作為一名開發(fā)人員,不能局限于語(yǔ)言規(guī)范,更需要對(duì)虛擬機(jī)規(guī)范有所了解。虛擬機(jī)規(guī)范有多種實(shí)現(xiàn),其中是和中所帶的虛擬機(jī),也是目前使用范圍最廣的虛擬機(jī)。世界第一款商用虛擬機(jī)。號(hào)稱世界上最快的虛擬機(jī)。 Java虛擬機(jī)發(fā)展史 注:本文大部分摘自《深入理解Java虛擬機(jī)(第二版)》 作為一名Java開發(fā)人員,不能局限于Java語(yǔ)言規(guī)范,更需要對(duì)Java虛...
摘要:當(dāng)兩個(gè)對(duì)象相互引用時(shí),這兩個(gè)對(duì)象就不會(huì)被回收引用計(jì)數(shù)算法不被主流虛擬機(jī)采用,主要原因是它很難解決對(duì)象之間相互循環(huán)引用的問(wèn)題。 垃圾收集器與內(nèi)存分配策略 詳解 3.1 概述 本文參考的是周志明的 《深入理解Java虛擬機(jī)》第三章 ,為了整理思路,簡(jiǎn)單記錄一下,方便后期查閱。 3.2 對(duì)象已死嗎 在垃圾收集器進(jìn)行回收前,第一件事就是確定這些對(duì)象哪些還存活,哪些已經(jīng)死去。 3.2.1 引用...
摘要:第章內(nèi)存區(qū)域與內(nèi)存溢出異常運(yùn)行時(shí)數(shù)據(jù)區(qū)域虛擬機(jī)在執(zhí)行程序的過(guò)程中會(huì)把它所管理的內(nèi)存劃分為若干個(gè)不同的數(shù)據(jù)區(qū)域。即對(duì)象指向它的類元數(shù)據(jù)的指針,虛擬機(jī)通過(guò)這個(gè)指針來(lái)確定這個(gè)對(duì)象是哪個(gè)類的實(shí)例。 第2章 Java內(nèi)存區(qū)域與內(nèi)存溢出異常 2.2 運(yùn)行時(shí)數(shù)據(jù)區(qū)域 Java虛擬機(jī)在執(zhí)行Java程序的過(guò)程中會(huì)把它所管理的內(nèi)存劃分為若干個(gè)不同的數(shù)據(jù)區(qū)域。根據(jù)《Java虛擬機(jī)規(guī)范(Java SE 7版)...
閱讀 2990·2021-09-10 10:50
閱讀 3193·2019-08-30 14:19
閱讀 3521·2019-08-29 17:31
閱讀 3248·2019-08-29 16:43
閱讀 2198·2019-08-29 14:05
閱讀 2095·2019-08-29 13:17
閱讀 2047·2019-08-26 13:25
閱讀 1763·2019-08-26 12:20