最主要的危險操做是下面這三種:
1. jmap -dump
這個命令執行,JVM會將整個heap的信息dump寫入到一個文件,heap若是比較大的話,就會致使這個過程比較耗時,而且執行的過程當中爲了保證dump的信息是可靠的,因此會暫停應用。spa
2. jmap -permstat
這個命令執行,JVM會去統計perm區的情況,這整個過程也會比較的耗時,而且一樣也會暫停應用。線程
3. jmap -histo:live
這個命令執行,JVM會先觸發gc,而後再統計信息。內存
上面的這三個操做都將對應用的執行產生影響,因此建議若是不是頗有必要的話,不要去執行。ci
幾個配置說明io
配置 | 說明 |
---|---|
-Xms1024m | 初始堆大小爲1024M |
-Xmx1024m | 最大堆大小爲1024M |
-Xmn256m | 年輕代大小爲256M |
-XX:NewSIze=256m | 新生代初始內存的大小 |
-XX:MaxNewSize=256m | 年輕代最大值 |
-XX:PermSize=256m | 持久代初始值 |
-XX:MaxPermSize=256m | 持久代最大值 |
-Xss | 每一個線程的堆棧大小 |
-XX:NewRatio=4 | 年老代與年輕代的比值爲4:1 |
-XX:SurvivorRatio=8 | 一個Survivor區佔整個Young Gen 的1/10 |
指令1:jstack -l pid >/xxxx.txt(慎用)table
指令2:jstat -gcutil h3 pid 2000 20 配置
h3,每三行顯示一次標題map
2000 每2000ms顯示一次gc
20 顯示20次統計
指令3:jmap -histo pid