測試慢java定位代碼

1.先找進(jìn)程:

ps?-ef|grep?tomcat

root??????2303?????1?33?18:57?pts/2?

2.在找負(fù)載高的pid

top?-Hp?2303

(按CPU排序,找到對應(yīng)的PID即是CPU占用最多的線程诅妹,

在Java中可以使用jstack將該線程的堆棧打印出來罚勾,使用這個線程ID查找對應(yīng)的線程堆棧(要先將線程ID轉(zhuǎn)換成16進(jìn)制))

?PID?USER??????PR??NI??VIRT??RES??SHR?S?%CPU?%MEM????TIME+??COMMAND???????????????????????????????????????

?2474?root??????15???0?1134m?904m??18m?S??0.3?46.3???0:02.91?java??????????????????????????????????????????

?2303?root??????18???0?1134m?904m??18m?S??0.0?46.3???0:00.00?java??????????????????????????????????????????

?2304?root??????22???0?1134m?904m??18m?S??0.0?46.3???0:01.08?java??????????????????????????????????????????

?2306?root??????16???0?1134m?904m??18m?S??0.0?46.3???1:54.37?java???

3.

printf?"%x\n"??2474

得到2474的十六進(jìn)制值

4.查到代碼(jstack顯示虛擬機(jī)的線程快照)

jstack?2303?|?grep?9aa?-A?10?(-A顯示之后的10行)

5.使用jstat?-gcutil命令查看進(jìn)程的內(nèi)存情況(jstat?用于收集HotSpot虛擬機(jī)各方面的運(yùn)行數(shù)據(jù))

??jstat?-gcutil??2303?2000?10?

每個2s輸出一次,輸出10次??

查看進(jìn)程的內(nèi)存情況

各個字段的介紹

S0吭狡、S1?代表兩個Survivor區(qū)尖殃;

E?代表?Eden?區(qū);

O(Old)代表老年代划煮;

P(Permanent)代表永久代送丰; --------->java 8 之前

M (Metadata) 代表元數(shù)據(jù)? ? ---------->java8 之后

YGC(Young?GC)代表Minor?GC;

YGCT代表Minor?GC耗時弛秋;

FGC(Full?GC)代表Full?GC耗時器躏;

GCT代表Minor?&?Full?GC共計耗時

具體描述

S0年輕代中第一個survivor(幸存區(qū))已使用的占當(dāng)前容量百分比

S1年輕代中第二個survivor(幸存區(qū))已使用的占當(dāng)前容量百分比

E年輕代中Eden(伊甸園)已使用的占當(dāng)前容量百分比

O????old代已使用的占當(dāng)前容量百分比

P????perm代已使用的占當(dāng)前容量百分比? ?---------->java 8 之前

M? ?metadata表示占用容器的百分比? ?----------->java8 之后

YGC從應(yīng)用程序啟動到采樣時年輕代中g(shù)c次數(shù)

YGCT從應(yīng)用程序啟動到采樣時年輕代中g(shù)c所用時間(s)

FGC從應(yīng)用程序啟動到采樣時old代(全gc)gc次數(shù)

FGCT從應(yīng)用程序啟動到采樣時old代(全gc)gc所用時間(s)

GCT從應(yīng)用程序啟動到采樣時gc用的總時間(s)

解釋java堆分

Java?堆分為新生代和老年代,新生代一般劃分為三塊區(qū)域蟹略,Eden?+?From?Survivor?+?To?Survivor登失,Eden?和?Survivor?的內(nèi)存比為8:1,每次只使用一個Eden和一個?Survivor?區(qū)域挖炬,另一個Survivor?用于復(fù)制收集算法回收內(nèi)存揽浙。


對象一般盡量分配到新生代中,而對于大對象(長字符串和大數(shù)組)直接分配在老年代中意敛,同時“年齡”長的的對象會從新生代自動晉升到老年代中馅巷。

Java?方法區(qū)稱為永久代,只有?HotSpot?虛擬機(jī)才存在永久代草姻。

首先eden區(qū)申請分配空間钓猬,如果空間夠,就直接進(jìn)行分配撩独,否則進(jìn)行一次Minor?GC敞曹。minor?GC?首先會對Eden區(qū)的對象進(jìn)行標(biāo)記账月,標(biāo)記出來存活的對象。然后把存活的對象copy到From s0空間异雁。如果From空間足夠捶障,則回收eden區(qū)可回收的對象。在下一次mirror gc時候纲刀,則把From空間存活的對象和eden中的對象復(fù)制到To區(qū)(但是會有年齡增加),然后將eden和from清空.如果再有mirror gc時候,再將對象復(fù)制到from區(qū)清空eden和to區(qū),知道對象的年齡過大,必須被放到old區(qū).如果老年代空間也不夠(或者達(dá)到觸發(fā)老年年垃圾回收條件的話)則觸發(fā)一次full?GC项炼。

詳細(xì):https://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html

6.分析堆棧

??使用jstack命令查看進(jìn)程的堆棧情況

??jstack?14063?>>jstack.out

查找先關(guān)信息:把jstack.out文件從服務(wù)器拿到本地后,用編輯器查找?guī)в许?xiàng)目目錄并且線程狀態(tài)是RUNABLE的相關(guān)信息示绊。

找到相應(yīng)的代碼锭部,并對它進(jìn)行分析。找出造成這樣的原因

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末面褐,一起剝皮案震驚了整個濱河市拌禾,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌展哭,老刑警劉巖湃窍,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異匪傍,居然都是意外死亡您市,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進(jìn)店門役衡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來茵休,“玉大人,你說我怎么就攤上這事手蝎¢泡海” “怎么了?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵棵介,是天一觀的道長钉鸯。 經(jīng)常有香客問我,道長邮辽,這世上最難降的妖魔是什么亏拉? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮逆巍,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘莽使。我一直安慰自己锐极,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布芳肌。 她就那樣靜靜地躺著灵再,像睡著了一般肋层。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上翎迁,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天栋猖,我揣著相機(jī)與錄音,去河邊找鬼汪榔。 笑死蒲拉,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的痴腌。 我是一名探鬼主播雌团,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼士聪!你這毒婦竟也來了锦援?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤剥悟,失蹤者是張志新(化名)和其女友劉穎灵寺,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體区岗,經(jīng)...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡略板,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了躏尉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蚯根。...
    茶點(diǎn)故事閱讀 40,505評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖胀糜,靈堂內(nèi)的尸體忽然破棺而出颅拦,到底是詐尸還是另有隱情,我是刑警寧澤教藻,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布距帅,位于F島的核電站,受9級特大地震影響括堤,放射性物質(zhì)發(fā)生泄漏碌秸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一悄窃、第九天 我趴在偏房一處隱蔽的房頂上張望讥电。 院中可真熱鬧,春花似錦轧抗、人聲如沸恩敌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽纠炮。三九已至月趟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間恢口,已是汗流浹背孝宗。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留耕肩,地道東北人因妇。 一個月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像看疗,于是被迫代替她去往敵國和親沙峻。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評論 2 359

推薦閱讀更多精彩內(nèi)容

  • jvm原理 Java虛擬機(jī)是整個java平臺的基石,是java技術(shù)實(shí)現(xiàn)硬件無關(guān)和操作系統(tǒng)無關(guān)的關(guān)鍵環(huán)節(jié)怖辆,是java...
    AI喬治閱讀 17,252評論 21 486
  • http://www.cnblogs.com/angeldevil/p/3801189.html值得一看 Clas...
    snail_knight閱讀 1,427評論 1 0
  • JVM架構(gòu) 當(dāng)一個程序啟動之前是复,它的class會被類裝載器裝入方法區(qū)(Permanent區(qū)),執(zhí)行引擎讀取方法區(qū)的...
    cocohaifang閱讀 1,673評論 0 7
  • 1.什么是垃圾回收竖螃? 垃圾回收(Garbage Collection)是Java虛擬機(jī)(JVM)垃圾回收器提供...
    簡欲明心閱讀 89,559評論 17 311
  • 根據(jù)閱讀 《深入理解java虛擬機(jī)》 加上一點(diǎn)自己的理解淑廊。 JVM運(yùn)行時數(shù)據(jù)區(qū)域 程序計數(shù)器:程序計數(shù)器是一個較小...
    zycisbg閱讀 1,949評論 0 3