導航:首頁 > 編程語言 > javadump內存

javadump內存

發布時間:2022-04-11 07:11:50

⑴ 如何在eclipse mp java內存佔用情況和列印GC LOG

一、下載MAT
二、測試代碼如下:

packagecom.memoryLeakAnalysis;

importjava.util.ArrayList;
importjava.util.List;

publicclassMemoryLeakDemo{

publicstaticvoidmain(String[]args){

List<String>list=newArrayList<String>();
while(true){
list.add("OutOfMemoryErrorsoon");
}
}

}

⑵ mp內存format b什麼意思

其中jmap是java自帶的工具查看整個JVM內存狀態jmap-heap[pid]要注意的是在使用CMSGC情況下,jmap-heap的執行有可能會導致JAVA進程掛起查看JVM堆中對象詳細佔用情況jmap-histo[pid]導出整個JVM中內存信息jmap-mp:format=b,file=文件名[pid]jhat是sun1.6及以上版本中自帶的一個用於分析JVM堆DUMP文件的工具,基於此工具可分析JVMHEAP中對象的內存佔用情況jhat-J-Xmx1024M[file]執行後等待console中輸入startHTTPserveronport7000即可使用瀏覽器訪問IP:提供的一個用於分析JVM堆Dump文件的插件。藉助這個插件可查看對象的內存佔用狀況,引用關系,分析內存泄露等。kill-3[pid]在Linux上找到Java所在的進程號,然後執行以上命令,線程的相關信息就輸出到consolejstackjstack是sunJDK自帶的工具,通過該工具可以看到JVM中線程的運行狀況,包括鎖等待,線程是否在運行執行jstack[pid],線程的所有堆棧信息"http-8080-10"daemonprio=10tid=x0a949bb60nid=0x884waitingformonitorentry[]"http-8080-10"這個線程處於等待狀態。waitingformonitorentry如果在連續幾次輸出線程堆棧信息都存在於同一個或多個線程上時,則說明系統中有鎖競爭激烈,死鎖,或鎖餓死的想像。「http-8080-11」daemonprio=10tix=xxxnid=xxxinobject.wait()[]java.lang.Thread.State:waiting(onobjectmonitor)該表示http-8080-11的線程處於對象的Wait上,等待其他線程的喚醒,這也是線程池的常見用法。「LowMemoryDetector」daemonprio=10tix=xxnid=xxxrunnable[]java.lang.Thread.State:runnable表示「LowMemoryDetector」的線程處於Runable狀態,等待獲取CPU的使用權.參考:/blog/static/100768914201242410583187/jvisualvm一.JavaVisualVM概述對於使用命令行遠程監控jvm太麻煩。在jdk1.6中Oracle提供了一個新的可視化的。JVM監控工具JavaVisualVM。jvisualvm.exe在JDK的bin目錄下。雙擊啟動JavaVisualVM後可以看到窗口左側「應用程序」欄中有「本地」、「遠程」、「快照」三個項目。「本地」下顯示的是在localhost運行的Java程序的資源佔用情況,如果本地有Java程序在運行的話啟動JavaVisualVM即可看到相應的程序名,點擊程序名打開相應的資源監控菜單,以圖形的形式列出程序所佔用的CPU、Heap、PermGen、類、線程的統計信息。「遠程」項下列出的遠程主機上的Java程序的資源佔用情況,但需要在遠程主機上運行jstatd守護程序VisualVM分為3類,本地它會自動偵測到,並顯示出來雙擊Local下的任一節點,看到右邊的變化,你可以監控CPU,內存,類,線程等運行狀況,實時監控伺服器性能。右鍵VisualVM我們可以看到ThreadDump,HeapDump做ThreadDump很快,馬上就可以看到結果HeapDump要稍花費一些時間(可以看到當前heap里對象的數量及佔用的比例,做OOM很好用)對其功能不再做描述,可以查閱網上相關質量,我們主要講的是如何使用VisualVM遠程監控。

⑶ 如何通過mat從java內存mp中找到緩存對象中的所有字元串

生成java內存mp文件

標准做法,jmap mp,需要sudo許可權,另外jmap指定的mp文件一定要是啟動服務的用戶可寫,比如可以新創建一個文件夾

sudo mkdir /home/q/memmp
sudo chown resin:resin /home/q/memmp

sudo -u resin /home/q/java/default/bin/jmap -mp:live,format=b,file=/home/q/memmp/memMap.20130527.hprof ${pid}

把mp文件拿到本地

把mp文件壓縮下,否則會很大,scp到本地

安裝mat

直接在eclipse里:

1.Help->Install New Software

2.輸入update site: http://download.eclipse.org/mat/1.2/update-site/,然後一直next就行了,安裝完重啟eclipse

3.最好創建一個單獨的workspace來放內存mp文件

把mp文件導入mat

1.打開eclipse,選擇上一步你創建的存放內存mp文件的workspace,我本機上是~/mat
2.打開剛才拿到本地的mp文件,然後等著mat解析就完了,注意這時候你可能需要修改eclipse安裝文件下的eclipse.ini,調整下eclipse的jvm參數(xms和xmx),把heap調大些,否則解析過程會報OOM

3.解析完後會生成一個Overview,我們一般會選擇org.apache.catalina.loader.WebappClassLoader,作為分析top
consumer的切入點,這是tomcat上web應用的classloader

4.單擊餅圖上org.apache.catalina.loader.WebappClassLoader的區域,會出現一個彈出菜單,選擇List
Objects->with incoming references,因為所有的web應用內的對象都會引用它們自己的class
loader,也就是org.apache.catalina.loader.WebappClassLoader
5.得到如下所示列表,單擊retained heap這個tab標簽可以排序,選擇按照佔用內存的大小倒排序,得到了top memory
consumers列表

定位緩存對象

我們關心的是top consumer里的RtTreeCache里,有多少重復房型,怎麼得到的呢,follow the steps:

1.查看RtTreeCache對象的outgoing
reference,因為我們需要看這個對象裡面的屬性,屬性對象也就是RtTreeCache對象引用的對象,也就是outgoing reference

2.找到我們需要分析的數據在對象結構中的位置

3.可以看到我們要查找的目標是RtTreeCache對象下的所有HotelRtTree對象的rtReverseMap對象屬性下的table數組內所有entry的key,我們接下來就看看怎麼把這個冗長的關系轉化成一個簡單的OQL語句

寫MAT OQL

OQL是MAT里的一個內嵌查詢語言,它的官方描述很形象:
Memory Analyzer has a built-in object query
language (OQL) that allows to query the heap mp with custom SQL-like queries. Just
think of classes as tables, objects as rows, and fields as columns.

總結

jmap + mat是我們分析java內存的利器,而通過mat
oql,我們可以從mp文件里提取出更多的類似於有多少內容相同的不同字元串對象等信息來幫助我們做技術決策。

⑷ 如何分析jvm mp 內存日誌

當伺服器掛起,崩潰或者性能底下時,就需要抓取伺服器的線程堆棧(Thread Dump)用於後續的分析.

Thread mp提供了當前活動的線程的快照. 它提供了JVM中所有Java線程的棧跟蹤信息

有很多方式可用於獲取Thread Dump, 一些是操作系統特定的命令.

操作系統命令獲取ThreadDump:

Windows:

1. 轉向伺服器的標准輸出窗口並按下Control + Break組合鍵, 之後需要將線程堆棧復制到文件中

UNIX/ Linux

首先查找到伺服器的進程號(process id), 然後獲取堆棧.

1. ps –ef | grep java

2. kill -3

注意一定要謹慎, 一步不慎就可能讓伺服器進程被殺死!

JVM 自帶的工具獲取線程堆棧:

JDK自帶命令行工具獲取PID並做ThreadDump:

1. jps

2. jstack

使用JVisualVM:

Threads 標簽頁àThreadDump按鈕.

WebLogic 自帶的獲取 thread mp的工具:

1. webLogic.Admin 工具

a. 打開命令提示符, 通過運行/bin/setDomain.env設置相關類路徑

b. 執行下面的命令

java weblogic.Admin -url t3://localhost:7001 -username weblogic -password weblogic1 THREAD_DUMP

注意: Thread Dump 會列印到標准輸出, 如nohup日誌或者進程窗口.

2. 使用 Admin Console

a. 登錄 Admin Console , 點擊對應的伺服器

b. 點擊Server à Monitoring àThreads

c. 點擊: Dump Thread Stack 按鈕

3. 使用WLST (WebLogic Scripting Tool)

connect(『weblogic』,'weblogic1』,』t3://localhost:7001』)

cd(『Servers』)

cd(『AdminServer』)

threadDump()

disconnect()

exit()

注意: 線程堆棧將會保存在運行wlst的當前目錄下.

4. 使用utils.ThreadDumper

用法:

C:\bea\wlserver_10.3\server\lib>java -cp weblogic.jar utils.ThreadDumper

Broadcast Thread mps disabled: must specify weblogic.debug.mpThreadAddr and

weblogic.debug.mpThreadPort

Exception in thread "main" java.lang.I llegalArgumentException: Port out of range

:-1

at java.net.DatagramPacket.setPort(Unknown Source)

at java.net.DatagramPacket.(Unknown Source)

at java.net.DatagramPacket.(Unknown Source)

at utils.ThreadDumper.sendDumpMsg(ThreadDumper.java:124)

at utils.ThreadDumper.main(ThreadDumper.java:145)

5. 如果伺服器是作為Windows服務的方式運行, 請運行下列命令:

WL_HOME\bin\beasvc -mp -svcname:service-name

⑸ 宕機的時候,java mp 是什麼東西這句話又是什麼意思

對於大型 java 應用程序來說,再精細的測試都難以堵住所有的漏洞,即便我們在測試階段進行了大量卓有成效的工作,很多問題還是會在生產環境下暴露出來,並且很難在測試環境中進行重現。JVM 能夠記錄下問題發生時系統的運行狀態並將其存儲在轉儲(mp)文件中,從而為我們分析和診斷問題提供了重要的依據。常見的轉儲文件包括 Java Dump, Heap mp 和 System mp。

⑹ 如何排查Java內存泄露

⑺ 請教java堆內存mp文件太大,如何打開

伺服器是64位的?貌似都不怎麼推薦用64位的jdk。

這個只有找64位機子上面看了,把xmx設置大些。32位機子上面的內存使用只有3g左右,不會超過mp文件的3.8g的。

⑻ 什麼是java mp文件 怎麼生成

java mp heap 是分配給實例類和數組對象運行數據區,所有java線程在運行期間共享heap中的數據。Java heap mp相當於java應用在運行的時候在某個時間點上打了個快照(snapshot)。
有java mp文件生成的方式如下:
1.使用$JAVA_HOME/bin/jmap -mp來觸發,eg:jmap -mp:format=b,file=/home/longhao/heammp.out
2.使用$JAVA_HOME/bin/jcosole中的MBean,到MBean>com.sun.management>HotSpotDiagnostic>操作>mpHeap中,點擊 mpHeap按鈕。生成的mp文件在java應用的根目錄下面。
3.在應用啟動時配置相關的參數 -XX:+HeapDumpOnOutOfMemoryError,當應用拋出OutOfMemoryError時生成mp文件。
4.使用hprof。啟動虛擬機加入-Xrunhprof:head=site,會生成java.hprof.txt文件。該配置會導致jvm運行非常的慢,不適合生產環境。

⑼ java visualvm 堆mp怎麼分析

jmap是java自帶的工具

1. 查看整個JVM內存狀態

jmap -heap [pid]

2. 查看JVM堆中對象詳細佔用情況
jmap -histo [pid]

3. 導出整個JVM 中內存信息,可以利用其它工具打開mp文件分析,例如jdk自帶的visualvm工具

jmap -mp:file=文件名.mp [pid]

閱讀全文

與javadump內存相關的資料

熱點內容
優信二手車解壓後過戶 瀏覽:61
Windows常用c編譯器 瀏覽:778
關於改善國家網路安全的行政命令 瀏覽:833
安卓如何下載網易荒野pc服 瀏覽:654
javainetaddress 瀏覽:104
蘋果4s固件下載完了怎麼解壓 瀏覽:1002
命令zpa 瀏覽:285
python編譯器小程序 瀏覽:944
在app上看視頻怎麼光線調暗 瀏覽:540
可以中文解壓的解壓軟體 瀏覽:591
安卓卸載組件應用怎麼安裝 瀏覽:912
使用面向對象編程的方式 瀏覽:339
程序員項目經理的年終總結範文 瀏覽:929
內衣的加密設計用來幹嘛的 瀏覽:432
淮安數據加密 瀏覽:292
魔高一丈指標源碼 瀏覽:982
松下php研究所 瀏覽:168
c回調java 瀏覽:399
夢幻端游長安地圖互通源碼 瀏覽:745
電腦本地文件如何上傳伺服器 瀏覽:312