Posted on 2015-02-17 06:51
leekiang 閱讀(789)
評(píng)論(0) 編輯 收藏 所屬分類:
java
1. java.lang.OutOfMemoryError: GC overhead limit exceeded原因
?? <http://blog.csdn.net/taijianyu/article/details/6606792>
?? <http://www.sunnybtoc.com/page/M0/S746/746195.html>
? ?
2. 用jhat分析·jmap -dump:format=b,file=mem.dat PID·命令導(dǎo)出來的文件時(shí)報(bào)錯(cuò)
?? java.io.IOException: Unrecognized magic number
?? <https://forums.oracle.com/forums/thread.jspa?threadID=1542284> 沒找到原因
? ?
3. 命令
?? 1. jmap
?jmap -dump:live,format=b,file=heap.dmp PID 把本機(jī)的java內(nèi)存映像導(dǎo)出到heap.dmp中
?jmap pid #打印內(nèi)存使用的摘要信息
????? jmap –heap pid #java heap信息
????? jmap -histo:live pid #統(tǒng)計(jì)對(duì)象count ,live表示在使用
????? jmap -histo pid >mem.txt #打印比較簡(jiǎn)單的各個(gè)有多少個(gè)對(duì)象占了多少內(nèi)存的信息,一般重定向的文件
????? jmap -dump:format=b,file=mem.dat PID #將內(nèi)存使用的詳細(xì)情況輸出到mem.dat 文件
?? 2. jhat 用來分析jmap導(dǎo)出的文件
????? 用jhat命令可以參看 jhat -port 7000 mem.dat
????? 然后使用:http://127.0.0.1:7000/ 查看類相關(guān)信息
?? 3. jstat
????? jstat -gcutil? PID
????? 例子:
??? S0????? S1???? E????? O????? P???? YGC???? YGCT??? FGC??? FGCT???? GCT
??? 11.63?? 0.00?? 56.46? 66.92? 98.49 162??? 0.248??? 6????? 0.331??? 0.579
??? S0? — Heap上的 Survivor space 0 區(qū)已使用空間的百分比
??? S1? — Heap上的 Survivor space 1 區(qū)已使用空間的百分比
??? E?? — Heap上的 Eden space 區(qū)已使用空間的百分比
??? O?? — Heap上的 Old space 區(qū)已使用空間的百分比
??? P?? — Perm space 區(qū)已使用空間的百分比
??? YGC — 從應(yīng)用程序啟動(dòng)到采樣時(shí)發(fā)生 Young GC 的次數(shù)
??? YGCT– 從應(yīng)用程序啟動(dòng)到采樣時(shí) Young GC 所用的時(shí)間(單位秒)
??? FGC — 從應(yīng)用程序啟動(dòng)到采樣時(shí)發(fā)生 Full GC 的次數(shù)
??? FGCT– 從應(yīng)用程序啟動(dòng)到采樣時(shí) Full GC 所用的時(shí)間(單位秒)
??? GCT — 從應(yīng)用程序啟動(dòng)到采樣時(shí)用于垃圾回收的總時(shí)間(單位秒)
###參考
1. [JMAP、jstat命令詳解](http://bbs.chinaunix.net/thread-3644198-1-1.html)
2. [J2SE6中使用jhat來分析內(nèi)存堆](http://hi.baidu.com/tister/item/9444a3125796cf433a176eb9)
###jvm的內(nèi)存回收過程是這樣的
對(duì)象在Eden Space創(chuàng)建,當(dāng)Eden Space滿了的時(shí)候,gc就把所有在Eden Space中的對(duì)象掃描一次,
把所有有效的對(duì)象復(fù)制到第一個(gè)Survivor Space,同時(shí)把無效的對(duì)象所占用的空間釋放。
當(dāng)Eden Space再次變滿了的時(shí)候,就啟動(dòng)移動(dòng)程序把Eden Space中有效的對(duì)象復(fù)制到第二個(gè)Survivor Space,
同時(shí),也將第一個(gè)Survivor Space中的有效對(duì)象復(fù)制到第二個(gè)Survivor Space。如果填充到第二個(gè)Survivor Space
中的有效對(duì)象被第一個(gè)Survivor Space或Eden Space中的對(duì)象引用,那么這些對(duì)象就是長(zhǎng)期存在的,
此時(shí)這些對(duì)象將被復(fù)制到Permanent Generation。