關于抓java的dump中live參數
我們經常需要查看內存中的一些變量的值,來定位生產環境的問題。一般會使用jmap來抓dump,在抓dump的時候,我們會把堆全部扒下來:
jmap -dump:format=b,file=path pid
然后會生成一個幾百M的包,讓運維人員從生產環境拖下來再傳給你,然后你用jvisualvm打開,等你打開這個dump的時候,看到你想看的內存的時候,基本上半天時間已經過去了。
其實我們丟了一個很重要的參數:live,這個參數表示我們需要抓取目前在生命周期內的內存對象,也就是說GC收不走的對象,然后我們絕大部分情況下,需要的看的就是這些內存。如果我們把這個參數加上:
jmap -dump:live,format=b,file=path pid
那么抓下來的dump會減少一個數量級,在幾十M左右,這樣我們傳輸,打開這個dump的時間將大大減少,為解決故障贏取了寶貴的時間。
站長行業門戶(http://www.software8.co/wzjs/java/1760.html)文章,希望大家可以留言建議