Java常用分析工具之jmap
簡介
jmap是JDK中提供的一個用來監視程序執行中的jvm實體記憶體的佔用情況的工具。該程序記憶體內,所有物件的情況,例如產生了哪些物件,物件數量。當系統崩潰時,jmap 可以從core檔案或程序中獲得記憶體的具體匹配情況,包括Heap size, Perm size等。
使用jmap會影響線上執行的應用,所以儘量不要在線上執行此命令。如果想dump堆資訊,可以使用gcore命令,比jmap -dump快。
使用
jmap的使用很簡單,可以通過以下命令檢視。
jmap -h Usage: jmap [option] <pid> (to connect to running process) jmap [option] <executable<core> (to connect to a core file) jmap [option] [[email protected]]<remote server IP or hostname> (to connect to remote debug server) .......
案例
檢視堆heap佔用情況
jmap -heap 90099 Attaching to process ID 90099, please wait... Debugger attached successfully. Server compiler detected. JVM version is24.71-b01 using thread-local object allocation. Parallel GC with 4 thread(s) #垃圾回收的方式 Heap Configuration: #堆配置資訊 MinHeapFreeRatio = 0 MaxHeapFreeRatio = 100 MaxHeapSize = 2147483648 (2048.0MB) NewSize = 1310720 (1.25MB) MaxNewSize = 17592186044415 MB OldSize = 5439488(5.1875MB) NewRatio = 2 SurvivorRatio = 8 PermSize = 21757952 (20.75MB) MaxPermSize = 85983232 (82.0MB) G1HeapRegionSize = 0 (0.0MB) Heap Usage: PS Young Generation Eden Space: capacity = 34603008 (33.0MB) used = 9773032 (9.320289611816406MB) free = 24829976 (23.679710388183594MB) 28.24330185398911% used From Space: capacity = 5242880 (5.0MB) used = 0 (0.0MB) free = 5242880 (5.0MB) 0.0% used To Space: capacity = 5242880 (5.0MB) used = 0 (0.0MB) free = 5242880 (5.0MB) 0.0% used PS Old Generation capacity = 89128960 (85.0MB) used = 0 (0.0MB) free = 89128960 (85.0MB) 0.0% used PS Perm Generation capacity = 22020096 (21.0MB) used = 2666808 (2.5432662963867188MB) free = 19353288 (18.45673370361328MB) 12.110791887555804% used 677 interned Strings occupying 44048 bytes.
檢視物件佔用記憶體情況
$ jmap -histo:live 96176 num #instances #bytes class name ---------------------------------------------- 1: 5948 766656 <methodKlass> 2: 5948 679168 <constMethodKlass> 3: 401 474448 <constantPoolKlass> 4: 365 289664 <constantPoolCacheKlass> 5: 401 276112 <instanceKlassKlass> 6: 562 93176 [B 7: 900 86256 [C 8: 463 45328 java.lang.Class 9: 653 43216 [[I 10: 608 37144 [S 11: 45 24480 <objArrayKlassKlass>
輸出內容的一些說明:
[C is a char[]
[S is a short[]
[I is a int[]
[B is a byte[]
[[I is a int[][]
上面的輸出中[C物件佔用Heap這麼多,往往跟String有關,String其內部使用final char[]陣列來儲存資料的。
constMethodKlass/ methodKlass/ constantPoolKlass/ constantPoolCacheKlass/ instanceKlassKlass/ methodDataKlass
與Classloader相關,常駐與Perm區。
匯出堆資訊
可以使用jmap把堆資訊匯出,並使用視覺化工具mat分析。匯出的命令如下:
$ jmap -dump:format=b,file=a.dmp 96185 Dumping heap to /Users/canglong/dev/test/a.dmp ... Heap dump file created
相關推薦
Java常用分析工具之jmap
簡介jmap是JDK中提供的一個用來監視程序執行中的jvm實體記憶體的佔用情況的工具。該程序記憶體內,所有物件的情況,例如產生了哪些物件,物件數量。當系統崩潰時,jmap 可以從core檔案或程序中獲得記憶體的具體匹配情況,包括Heap size, Perm size等。使用
Linux系統IO分析工具之iotop常用引數介紹
Linux系統IO分析工具之iotop常用引數介紹 作者:尹正傑 版權宣告:原創作品,謝絕轉載!否則將追究法律責任。 W
Linux系統IO分析工具之iotstat常用引數介紹
Linux系統IO分析工具之iotstat常用引數介紹 作者:尹正傑 版權宣告:原創作品,謝絕轉載!否則將追究法律責任。 1>.安裝
java記憶體溢位分析工具:jmap使用實戰
在一次解決系統tomcat老是記憶體撐到頭,然後崩潰的問題時,使用到了jmap。1 使用命令在環境是linux+jdk1.5以上,這個工具是自帶的,路徑在JDK_HOME/bin/下jmap -histo pid>a.log2 輸出結果摘要Size Count
論持久戰之Java效能監控工具(jmap)
首先看一下Java官方提供的引數示例: 下面介紹三個常用引數(heap、dump、histo) -heap(to print java heap summary) ①堆配置資訊 ②堆使用資訊 -dump:(to dump jav
idea外掛篇之java記憶體分析工具(JProfiler)
前言 在執行java的時候有時候想測試雲執行時佔用記憶體情況,這時候就需要使用測試工具查看了。在eclipse裡面有 Eclipse Memory Analyzer tool(MAT)外掛可以測試,而
分析 Java heap dump工具之IBM HeapAnalyzer
IBM HeapAnalyzer是一款免費的JVM記憶體堆的圖形分析工具,它可以有效的列舉堆的記憶體使用狀況,幫助分析Java記憶體洩漏的原因。 下載解壓後有一個ha413.jar 執行環境要求: 1、使用 Java 2 Platform,JDK 1
Java命令學習系列之jmap
.com respond 標識 config 一個bug running vivo huang 父類 jmap是JDK自帶的工具軟件,主要用於打印指定Java進程(或核心文件、遠程調試服務器)的共享對象內存映射或堆內存細節。可以使用jmap生成Heap Dump。 什麽
JVM自帶性能分析工具介紹——jmap和jhat
inf info weibo 介紹 oci mar style lan user 0L蛻投M口l形繃9http://huiyi.docin.com/sina_5847440681 RH姥胤1操士剮訊39鎂http://www.docin.com/sina_62699771
慢查詢日誌分析工具之pt-query-digest
lan git bash pre 日誌分析 windows images git 所有 curl 簡介 pt-query-digest 是用於分析mysql慢查詢的一個工具,與mysqldumpshow工具相比,py-query_digest 工具的分析結果更
Java 常用類庫 之 比較類 Comparable
instance 多少 一個 public 類關系 name length compare 實例 http://www.verejava.com/?id=169930999133100 /** 知識點: 比較類 Comparable 題目: 將某班學生按數
Java 常用類庫 之 Random 隨機數類實例
com clas CA java arraylist wan 隨機 TP array http://www.verejava.com/?id=169931132381103 /** 知識點:Random 隨機數類 實際應用: 敵人飛機隨機從屏幕的上方出現
Java 常用類庫 之 Date 日期類
ID ret ati 轉換成 知識 HR text exceptio imp http://www.verejava.com/?id=16993074079095 /** 知識點: Date 日期類 */ import java.util.Date; import
Java 常用類庫 之 SimpleDateFormat 日期格式化
pareto parse out oid turn sta AS 對象 ref http://www.verejava.com/?id=16993055673892 /** 知識點:Calandar 日期處理類 */ import java.util.*; impo
Java 常用類庫 之 大精度數值
++ mat CI 數值 ger import str big sta http://www.verejava.com/?id=17159675312132 import java.math.BigDecimal; import java.math.BigInteger;
Java常用資料結構之List
JDK 11正式釋出了,Oracle終於出了一個長期維護版本,應該將是繼JDK 8之後的一個常規使用版本。 前言 作為Java系開發者對Java集合類的使用應該是較為頻繁的,也是面試中經常會被問的問題。一直想整理一下Java集合和Android中的優化集合類,借這次機會
Java常用資料結構之Set之TreeSet
前言 上篇文章我們分析了HashSet,它是基於HashMap實現的,那TreeSet會是怎麼實現的呢?沒錯!和大家想的一樣,它是基於TreeMap實現的。所以,TreeSet的原始碼也很簡單,主要還是理解TreeMap。 TreeSet的繼承關係 按照慣例,先來看TreeSet類的繼承關係: pub
Android 效能分析工具之TraceView
Android 效能分析工具之TraceView TraceView簡介 Traceview本身是一個數據分析工具, Android 平臺將Traceview作為 Android SDK內建的一個工具,主要用於載入 Android 應用程式所生成的trace檔案並且分析trace檔案採集到的資料裡面
Java 常用的工具類—判斷Excel版本&讀取Excel/CSV檔案
以下內容均來自實際專案需求,記錄下,網上找的讀取Excel會出現不少問題,下面程式碼是經過好多次測試改進的符合現在專案的程式碼,如有不同要求,請自行修改,程式碼均只去掉了包名。 注:我們的Excel 第一行是表頭,其他行是資料1、第一行遇到空列,後面的內容自動忽略掉, 2、如
Mac os 下開啟java記憶體分析工具 mat
下載MAT後, 解壓得到mat.app, 但是直接點選打開出錯, 顯示錯誤資訊在檔案 /Users/along/.eclipse/762171948_macosx_cocoa_x86_64/configuration/1539580415773.log中. 1.