亚洲精品久久久久久第一页-人妻少妇精彩视品一区二区三区-91国产自拍免费视频-免费一级a在线播放视频正片-少妇天天日天天射天天爽-国产大屁股喷水视频在线观看-操美女骚穴抽插性爱视频-亚洲 欧美 中文字幕 丝袜-成人免费无码片在线观看

打開dump文件的操作步驟 dump文件怎么查看

在日常開發(fā)中,即使代碼寫得有多謹(jǐn)慎,免不了還是會發(fā)生各種意外的事件,比如服務(wù)器內(nèi)存突然飆高,又或者發(fā)生內(nèi)存溢出(OOM) 。當(dāng)發(fā)生這種情況時,我們怎么去排查,怎么去分析原因呢?
這時就引出這篇文章要講的dump文件,各位看官且往下看 。
什么是dump文件dump文件是一個進(jìn)程或者系統(tǒng)在某一個給定的時間的快照 。
dump文件是用來給驅(qū)動程序編寫人員調(diào)試驅(qū)動程序用的,這種文件必須用專用工具軟件打開 。
dump文件中包含了程序運(yùn)行的模塊信息、線程信息、堆棧調(diào)用信息、異常信息等數(shù)據(jù) 。
在服務(wù)器運(yùn)行我們的Java程序時,是無法跟蹤代碼的,所以當(dāng)發(fā)生線上事故時,dump文件就成了一個很關(guān)鍵的分析點(diǎn) 。
如何生成dump文件這里介紹兩種方式 , 一種是主動的,一種是被動的 。
方式一主動生成dump文件 。首先要查找運(yùn)行的Java程序的pid 。
使用top命令:

打開dump文件的操作步驟 dump文件怎么查看

文章插圖
然后使用jmap命令生成dump文件 。file后面是保存的文件名稱,1246則是java程序的PID 。
jmap -dump:format=b,file=user.dump 1246
打開dump文件的操作步驟 dump文件怎么查看

文章插圖
方式二其實(shí)在很多時候我們是不知道何時會發(fā)生OOM,所以需要在發(fā)生OOM時自動生成dump文件 。
其實(shí)很簡單,只需要在啟動時加上如下參數(shù)即可 。HeapDumpPath表示生成dump文件保存的目錄 。
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=D:\tmp我們還需要模擬出OOM錯誤,以此觸發(fā)產(chǎn)生dump文件,首先寫個接口:
private static Map<String, String> map = new HashMap<>();@RequestMapping("/oom")public String oom() throws Exception {for (int i = 0; i < 100000; i++) {map.put("key" + i, "value" + i);}return "oom";}然后在啟動時設(shè)置堆內(nèi)存大小為32M 。
-Xms32M -Xmx32M因?yàn)橐笈_啟動 , 并且輸出日志,所以最后啟動命令就是這樣:
nohup java -jar -Xms32M -Xmx32M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/usr/local user-0.0.1-SNAPSHOT.jar> log.file2>&1 &然后請求oom的接口 , 查看日志 , 果然發(fā)生了OOM錯誤 。
打開dump文件的操作步驟 dump文件怎么查看

文章插圖
查看保存dump的目錄,果然生成了對應(yīng)的dump文件 。
打開dump文件的操作步驟 dump文件怎么查看

文章插圖
如何查看dump文件這里我介紹使用Jprofiler,有可視化界面 , 功能也比較完善,能夠打開JVM工具(通過-XX:+HeapDumpOnOutOfMemoryError JVM參數(shù)觸發(fā))創(chuàng)建的hporf文件 。
安裝過程這里就省略了,網(wǎng)上谷歌,百度自行查找 。我們把剛剛自動生成的java_pid1257.hprof用Jprofiler打開,看到是這個樣子 。
打開dump文件的操作步驟 dump文件怎么查看

文章插圖
明顯可以看出HashMap的Node對象,還有String對象的實(shí)例很多,占用內(nèi)存也是最多的 。這里還不夠明顯,我們看Biggest Objects 。
打開dump文件的操作步驟 dump文件怎么查看

文章插圖
這里就看出是UserController類的HashMap占用了大量的內(nèi)存 。所以造成OOM的原因不難看出,就是在UserController里的Map集合 。
總結(jié)當(dāng)然線上的代碼量,類的數(shù)量 , 實(shí)例的數(shù)量都非常龐大 , 所以沒有那么簡單就能找出報(bào)錯的原因,但是要用什么工具,怎么用至少要知道,那么當(dāng)遇到問題時,才不會慌張 。
我問過一些技術(shù)大佬,為什么技術(shù)大佬代碼寫得不是很多,但是工資卻特別高 。大佬說,那是因?yàn)楫?dāng)線上出現(xiàn)問題時,大佬能解決大家解決不了的問題 , 這種能力就體現(xiàn)出他個人的價值 。
【打開dump文件的操作步驟 dump文件怎么查看】一句話講完 , 業(yè)務(wù)代碼大部分程序員都會寫,而線上排錯能力并不是大部分程序員都會排 。


    以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請您及時就醫(yī)或請專業(yè)人士給予相關(guān)指導(dǎo)!

    「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助: