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