摘要:我們經(jīng)常用到的一工具分析棧內(nèi)存點(diǎn)擊下載分析堆內(nèi)存。下面我詳細(xì)介紹一下他們具體是使用方法是自帶的一個(gè)分析工具,我們可以在的安裝目錄找到中找到。
Java 內(nèi)存堆棧分析。我們?cè)诜治霈F(xiàn)網(wǎng)問(wèn)題時(shí)候,經(jīng)常會(huì)遇到一些問(wèn)題從日志上無(wú)法分析的疑難問(wèn)題。在我們舉足無(wú)措的時(shí)候,我們可以分析一些JVM內(nèi)存,來(lái)看看問(wèn)題出在哪里了。
我們經(jīng)常用到的一工具:
分析棧內(nèi)存(stack):jstack/kill -3 + IBM Thread and Monitor Dump Analyzer for Java (點(diǎn)擊下載)
分析堆內(nèi)存(heap): jmap + jhat。
我們通常是從棧信息入手來(lái)進(jìn)行分析。下面我詳細(xì)介紹一下他們具體是使用方法:
jstack是java自帶的一個(gè)分析工具,我們可以在java的安裝目錄找到:$JAVA_HOME/bin 中找到。
使用方法usage里面的介紹非常明確了,我就不去翻譯啦。我這里舉個(gè)例子:
我們先查詢一下java進(jìn)程,因?yàn)閖stack要根據(jù)java進(jìn)程號(hào)來(lái)打印stack信息:
ps -ef|grep java
將stack信息記錄到stack.out文件中: jstack -l 31155 > stack.out
我們?cè)儆肂M Thread and Monitor Dump Analyzer for Java這個(gè)工具來(lái)分析。
這里可以清晰的看到線程數(shù)狀態(tài)統(tǒng)計(jì),和每個(gè)線程的狀態(tài)。
具體的分析我們可以看看這篇文章。http://jameswxx.iteye.com/blog/1041173
jmap + jhat。這個(gè)兩個(gè)命令也是java自帶的,在$JAVA_HOME/bin中你也可以找到他們兩個(gè)。
基本使用方法是:
先打印heap信息:jmap -dump:live,format=b,file=heap.bin
注意這個(gè)文件一般會(huì)很大。要看應(yīng)用服務(wù)。
使用jhat分析:jhat -J-mx1024M heap.bin
這個(gè)命令會(huì)啟動(dòng)一個(gè)Server服務(wù),默認(rèn)的端口是7000。其中-mx是設(shè)置最大使用多少內(nèi)存,如果你要分析的heap文件很大的話,這個(gè)值要配置很大,不然會(huì)包內(nèi)存異常的錯(cuò)誤。
我們主要看這個(gè)兩個(gè)部分:
Show instance counts for all classes (excluding platform)
Show heap histogram
平臺(tái)外的對(duì)象信息,和對(duì)象heap樹狀圖,這個(gè)樹狀圖包括所有對(duì)象的個(gè)數(shù)已經(jīng)占有大小,占用的大小是bytes。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/64272.html
摘要:在之前,它是一個(gè)備受爭(zhēng)議的關(guān)鍵字,因?yàn)樵诔绦蛑惺褂盟占骼斫夂驮矸治龊?jiǎn)稱,是后提供的面向大內(nèi)存區(qū)數(shù)到數(shù)多核系統(tǒng)的收集器,能夠?qū)崿F(xiàn)軟停頓目標(biāo)收集并且具有高吞吐量具有更可預(yù)測(cè)的停頓時(shí)間。 35 個(gè) Java 代碼性能優(yōu)化總結(jié) 優(yōu)化代碼可以減小代碼的體積,提高代碼運(yùn)行的效率。 從 JVM 內(nèi)存模型談線程安全 小白哥帶你打通任督二脈 Java使用讀寫鎖替代同步鎖 應(yīng)用情景 前一陣有個(gè)做...
面試官:今天要不來(lái)聊聊JVM調(diào)優(yōu)相關(guān)的吧?面試官:你曾經(jīng)在生產(chǎn)環(huán)境下有過(guò)調(diào)優(yōu)JVM的經(jīng)歷嗎?候選者:沒有面試官:...候選者:嗯...是這樣的,我們一般優(yōu)化系統(tǒng)的思路是這樣的候選者:1. 一般來(lái)說(shuō)關(guān)系型數(shù)據(jù)庫(kù)是先到瓶頸,首先排查是否為數(shù)據(jù)庫(kù)的問(wèn)題候選者:(這個(gè)過(guò)程中就需要評(píng)估自己建的索引是否合理、是否需要引入分布式緩存、是否需要分庫(kù)分表等等)候選者:2. 然后,我們會(huì)考慮是否需要擴(kuò)容(橫向和縱向都...
摘要:點(diǎn)擊進(jìn)入我的博客命令行工具這些工具大多數(shù)是類庫(kù)的一層薄的包裝,它們的主要功能代碼是在類庫(kù)中實(shí)現(xiàn)的??梢暬ぞ呤堑侥壳盀橹闺S發(fā)布的功能最強(qiáng)大的運(yùn)行監(jiān)視和故障處理程序,并且可以預(yù)見在未來(lái)一段時(shí)間內(nèi)都是官方主力發(fā)展的虛擬機(jī)故障處理工具。 點(diǎn)擊進(jìn)入我的博客 3.1 JDK命令行工具 showImg(https://segmentfault.com/img/remote/14600000174...
摘要:虛擬機(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...
摘要:垃圾回收垃圾檢測(cè)引用計(jì)數(shù)法和可達(dá)性分析算法。引用計(jì)數(shù)法給一個(gè)對(duì)象添加引用計(jì)數(shù)器,每當(dāng)有個(gè)地方引用它,計(jì)數(shù)器就加,引用失效就減。通常會(huì)在老年代內(nèi)存被占滿時(shí)將會(huì)觸發(fā),回收整個(gè)堆內(nèi)存。 基礎(chǔ)知識(shí) JVM - HotSpot內(nèi)存布局(1.8之前版本) showImg(https://segmentfault.com/img/bVMdE6?w=1024&h=608); 1.8版本開始,持久區(qū)沒有...
閱讀 1823·2021-10-11 10:59
閱讀 2498·2021-09-30 09:53
閱讀 1868·2021-09-22 15:28
閱讀 2872·2019-08-29 15:29
閱讀 1626·2019-08-29 13:53
閱讀 3287·2019-08-29 12:34
閱讀 2922·2019-08-26 10:16
閱讀 2713·2019-08-23 15:16