1.GC日誌分析jvm
在JVM啓動時加上一些參數,當JVM出問題時能記下一些當時的狀況。GC的日誌輸出參數以下:工具
-verbose:gc 能夠輔助輸出一些詳細的GC信息性能
-XX:+PrintGCDetails 輸出GC的詳細信息線程
-XX:+PrintGCApplicationStoppedTime 輸出GC形成應用程序暫停的時間日誌
-XX:+PrintGCDateStamps GC發生的時間信息orm
-XX:+PrintHeapAtGC 在GC先後輸出堆中各個區域的大小
對象
-Xloggc:[file] 將GC信息輸出到單獨的文件中內存
2. 對快照文件分析io
能夠經過 jmap -dump:format=b,file=[filename] [pid] 來記錄下堆的內存快照,而後利用第三方工具,如mat來分析整個Heap的對象關聯狀況。form
內存耗盡量致使JVM直接垮掉,能夠經過參數:-XX:+HeapDumpOnOutOfMemoryError來配置當內存耗盡時記錄下內存快照,能夠經過-XX:HeapDumpPath 來指定文件的路徑。
3. JVM crash日誌分析
JVM有時會由於自身的bug而直接垮掉,能夠經過 -XX:ErrorFile=[filepath] 來指定jvm退出時產生日誌文件的路徑
-Xmx5000m 堆的最大size
-Xms5000m 堆的初始大小
-Xmn2000m 年輕代大小
-XX:PermSize=256m 永久區的大小
持久代通常固定大小爲64m,因此增大年輕代後,將會減少年老代大小。此值對系統性能影響較大,Sun官方推薦配置爲整個堆的3/8。
-Xss128k 每一個線程的堆棧大小