MDA/MDD/TDD/DDD/DDDDDDD
          posts - 536, comments - 111, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          jvm內存分析筆記

          Posted on 2015-02-17 06:51 leekiang 閱讀(793) 評論(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·命令導出來的文件時報錯
          ?? 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 把本機的java內存映像導出到heap.dmp中
          ?jmap pid #打印內存使用的摘要信息
          ????? jmap –heap pid #java heap信息
          ????? jmap -histo:live pid #統計對象count ,live表示在使用
          ????? jmap -histo pid >mem.txt #打印比較簡單的各個有多少個對象占了多少內存的信息,一般重定向的文件
          ????? jmap -dump:format=b,file=mem.dat PID #將內存使用的詳細情況輸出到mem.dat 文件
          ?? 2. jhat 用來分析jmap導出的文件
          ????? 用jhat命令可以參看 jhat -port 7000 mem.dat
          ????? 然后使用:http://127.0.0.1:7000/ 查看類相關信息
          ?? 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 區已使用空間的百分比
          ??? S1? — Heap上的 Survivor space 1 區已使用空間的百分比
          ??? E?? — Heap上的 Eden space 區已使用空間的百分比
          ??? O?? — Heap上的 Old space 區已使用空間的百分比
          ??? P?? — Perm space 區已使用空間的百分比
          ??? YGC — 從應用程序啟動到采樣時發生 Young GC 的次數
          ??? YGCT– 從應用程序啟動到采樣時 Young GC 所用的時間(單位秒)
          ??? FGC — 從應用程序啟動到采樣時發生 Full GC 的次數
          ??? FGCT– 從應用程序啟動到采樣時 Full GC 所用的時間(單位秒)
          ??? GCT — 從應用程序啟動到采樣時用于垃圾回收的總時間(單位秒)


          ###參考
          1. [JMAP、jstat命令詳解](http://bbs.chinaunix.net/thread-3644198-1-1.html)
          2. [J2SE6中使用jhat來分析內存堆](http://hi.baidu.com/tister/item/9444a3125796cf433a176eb9)


          ###jvm的內存回收過程是這樣的
          對象在Eden Space創建,當Eden Space滿了的時候,gc就把所有在Eden Space中的對象掃描一次,
          把所有有效的對象復制到第一個Survivor Space,同時把無效的對象所占用的空間釋放。
          當Eden Space再次變滿了的時候,就啟動移動程序把Eden Space中有效的對象復制到第二個Survivor Space,
          同時,也將第一個Survivor Space中的有效對象復制到第二個Survivor Space。如果填充到第二個Survivor Space
          中的有效對象被第一個Survivor Space或Eden Space中的對象引用,那么這些對象就是長期存在的,
          此時這些對象將被復制到Permanent Generation。

          主站蜘蛛池模板: 开鲁县| 秭归县| 湘潭市| 孟津县| 太湖县| 阳原县| 丰原市| 湄潭县| 化德县| 蒲江县| 青浦区| 城口县| 宁南县| 新晃| 辽宁省| 文山县| 和静县| 永康市| 安庆市| 古丈县| 肥东县| 蒙阴县| 太湖县| 肃宁县| 景洪市| 西峡县| 扬州市| 河北省| 武宣县| 怀远县| 阿合奇县| 温宿县| 锡林浩特市| 杭州市| 沙田区| 七台河市| 梁河县| 油尖旺区| 星子县| 章丘市| 罗甸县|