Java GC日誌檢視
Java GC型別
Java中的GC有哪幾種類型?
引數 |
描述 |
UseSerialGC |
虛擬機器執行在Client模式的預設值,開啟此開關引數後, 使用Serial+Serial Old收集器組合進行垃圾收集。 |
UseParNewGC |
開啟此開關引數後,使用ParNew+Serial Old收集器組合進行垃圾收集。 |
UseConcMarkSweepGC |
開啟此開關引數後,使用ParNew+CMS+Serial Old收集器組合進行垃圾收集。Serial Old作為CMS收集器出現Concurrent Mode Failure的備用垃圾收集器。 |
UseParallelGC |
虛擬機器執行在Server模式的預設值,開啟此開關引數後,使用Parallel Scavenge+Serial Old收集器組合進行垃圾收集。 |
UseParallelOldGC |
開啟此開關引數後,使用Parallel Scavenge+Parallel Old收集器組合進行垃圾收集。 |
在Java程式啟動完成後,通過jps觀察程序來查詢到當前執行的java程序,使用
Java程式碼- jinfo –flag UseSerialGC 程序
的方式可以定位其使用的gc策略,因為這些引數都是boolean型的常量,如果使用該種gc策略會出現+號,否則-號。
使用-XX:+上述GC策略可以開啟對應的GC策略。
GC日誌檢視
可以通過在java命令種加入引數來指定對應的gc型別,列印gc日誌資訊並輸出至檔案等策略。
GC的日誌是以替換的方式(>)寫入的,而不是追加(>>),如果下次寫入到同一個檔案中的話,以前的GC內容會被清空。
對應的引數列表
Java程式碼- -XX:+PrintGC 輸出GC日誌
- -XX:+PrintGCDetails 輸出GC的詳細日誌
- -XX:+PrintGCTimeStamps 輸出GC的時間戳(以基準時間的形式)
- -XX:+PrintGCDateStamps 輸出GC的時間戳(以日期的形式,如 2013-05-04T21:53:59.234
- -XX:+PrintHeapAtGC 在進行GC的前後打印出堆的資訊
- -Xloggc:../logs/gc.log 日誌檔案的輸出路徑
這裡使用如下的引數來進行日誌的列印:
Java程式碼- -XX:+PrintGCDateStamps -XX:+PrintGCDetails -Xloggc:./gclogs
對於新生代回收的一行日誌,其基本內容如下:
Java程式碼- 2014-07-18T16:02:17.606+0800: 611.633: [GC 611.633: [DefNew: 843458K->2K(948864K), 0.0059180 secs] 2186589K->1343132K(3057292K), 0.0059490 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
其含義大概如下:
Java程式碼- 2014-07-18T16:02:17.606+0800(當前時間戳): 611.633(時間戳): [GC(表示Young GC) 611.633: [DefNew(單執行緒Serial年輕代GC): 843458K(年輕代垃圾回收前的大小)->2K(年輕代回收後的大小)(948864K(年輕代總大小)), 0.0059180 secs(本次回收的時間)] 2186589K(整個堆回收前的大小)->1343132K(整個堆回收後的大小)(3057292K(堆總大小)), 0.0059490 secs(回收時間)] [Times: user=0.00(使用者耗時) sys=0.00(系統耗時), real=0.00 secs(實際耗時)]
老年代回收的日誌如下:
Java程式碼- 2014-07-18T16:19:16.794+0800: 1630.821: [GC 1630.821: [DefNew: 1005567K->111679K(1005568K), 0.9152360 secs]1631.736: [Tenured:
- 2573912K->1340650K(2574068K), 1.8511050 secs] 3122548K->1340650K(3579636K), [Perm : 17882K->17882K(21248K)], 2.7854350 secs] [Times: user=2.57 sys=0.22, real=2.79 secs]
gc日誌中的最後貌似是系統執行完成前的快照:
Java程式碼- Heap
- def new generation total 1005568K, used 111158K [0x00000006fae00000, 0x000000073f110000, 0x0000000750350000)
- eden space 893888K, 12% used [0x00000006fae00000, 0x0000000701710e90, 0x00000007316f0000)
- from space 111680K, 3% used [0x0000000738400000, 0x000000073877c9b0, 0x000000073f110000)
- to space 111680K, 0% used [0x00000007316f0000, 0x00000007316f0000, 0x0000000738400000)
- tenured generation total 2234420K, used 1347671K [0x0000000750350000, 0x00000007d895d000, 0x00000007fae00000)
- the space 2234420K, 60% used [0x0000000750350000, 0x00000007a2765cb8, 0x00000007a2765e00, 0x00000007d895d000)
- compacting perm gen total 21248K, used 17994K [0x00000007fae00000, 0x00000007fc2c0000, 0x0000000800000000)
- the space 21248K, 84% used [0x00000007fae00000, 0x00000007fbf92a50, 0x00000007fbf92c00, 0x00000007fc2c0000)
- No shared spaces configured.
GC日誌的離線分析
相關推薦
java GC 日誌檢視 gcviewer
要檢視GC日誌首先要知道GC的log放在哪裡,使用jps命令檢視當前有哪些java程序在執行,找到我們要檢視的java程式的程序pid 使用命令jinfo pid 來檢視這個程序對應的java 資訊,可以看到大概在最下面的地方有個引數-Xloggc:,他對應的就是gc lo
Java GC日誌檢視
Java GC型別 Java中的GC有哪幾種類型? 引數 描述 UseSerialGC 虛擬機器執行在Client模式的預設值,開啟此開關引數後, 使用Serial+Serial Old收集器組合進行垃圾收集。 UseParNewGC 開啟此開關引數
Java GC 日誌解析
兩個 cli 並行 回收 多線程 一次 exp dia 配置 JVM 在Java應用程序優化中是不可缺少的一大重項,如何合理配置Java參數,如果驗證配置參數的有效性,從GC日誌中可以獲得很重要的提示,以下是筆者對GC垃圾收集器默認開啟的組合日誌的部分的解析
jvm系列之-gc日誌檢視
在上一篇中我們介紹的有引數的設定,那我們要了解不同的引數對於程式的影響和對於調優的影響,這個時候我們就需要檢視gc日誌來看我們設定的引數是否合理,這一章節中我們就來檢視gc日誌 一、新生代和老年代的比值對效能的影響 Map map = new HashMap<&
JVM基礎系列教程|第四篇:Java GC 日誌分析
推薦視訊連結 什麼是 Java GC Java GC(Garbage Collection,垃圾收集,垃圾回收)機制,是Java與C++/C的主要區別之一,作為Java開發者,一般不需要專門編寫記憶體回收和垃圾清理程式碼,對記憶體洩露和溢位的問題,也不需要像
GC日誌檢視分析
0. 前言 GC(Garbage Collection)是Java虛擬機器中一個很重要的組成部分,在很多情況下我們都需要檢視它的日誌,下面內容就是介紹如何檢視GC日誌。 1. GET GC日誌 1.1 輸出日誌引數 要檢視GC日誌,需要設定一下j
Java GC 日誌詳解(一圖讀懂)
Java GC日誌可以通過 +PrintGCDetails開啟 以ParallelGC為例 YoungGC日誌解釋如下(圖片源地址:這裡) : FullGC(圖片源地址:這裡): 一目瞭然,一圖勝千言
Java GC 日誌詳解
Java GC日誌可以通過 +PrintGCDetails開啟 以ParallelGC為例 YoungGC日誌解釋如下(圖片源地址:這裡) : FullGC(圖片源地址:這裡): 一目瞭然,一圖勝千言
GC日誌檢視分析(轉)
GC日誌檢視分析 0. 前言 GC(Garbage Collection)是Java虛擬機器中一個很重要的組成部分,在很多情況下我們都需要檢視它的日誌,下面內容就是介紹如何檢視GC日誌。 1. GET GC日誌 1.1 輸出日誌引數 要檢視GC日誌,需要設定一下
Java-性能調優-理解GC日誌
times pla div 區別 開始 cat code you 區域 1 2 3 4 [ ~]# cat gc.log.0 | grep ‘Full GC‘ 1.652: [Full GC (System) 1.652:
Java虛擬機系列(四)---查看GC日誌
位置 最大堆 其他 asp alloc -s 調研 server pan 這一節穿插一點如何在eclipse中配置並查看某個Java應用GC日誌的知識點,我也是通過調研知道的,因為書中寫的不是很詳細,主要是為下一節做準備。 一、eclipse中配置GC 在eclipse
檢視JVM的GC日誌
Java GC型別 Java中的GC有哪幾種類型? 引數 描述 UseSerialGC 虛擬機器執行在Client模式的預設值,開啟此開關引數後, 使用Serial+Serial Old收集
深入理解Java虛擬機器(四)Eden、Survivor、老年代、GC日誌
1. 年輕代 1.1 Eden區和Survivor區 新生代GC(Minor GC):指發生在新生代的垃圾收集動作,Minor GC非常頻繁,新生代採用複製演算法,一般回收速度也比較快。因為採用複製演算法,所以年輕代分為三部分:1個Eden區和2個Survivor區(分別叫Fro
IDEA如何檢視GC日誌以及含義
1IDEA執行程式如何檢視GC日誌 首先點選IDEA右上角這個位置 然後點選第一個 2.含義 下面是我的IDEA測試的時候打印出來的GC日誌 [GC (Allocation Failure) [PSYoungGen: 33280K->5112K(38400K)] 3
怎樣在IDEA中檢視GC日誌
引言 今天在看書的時候,在講到垃圾收集器與記憶體分配策略的章節時,文中有如下一段程式碼: public class ReferenceCountingGC { public Object instance = null; private static final i
(轉)Java GC - 監控回收行為與日誌分析
1. 簡介 在上一篇介紹<Java GC - 垃圾回收機制>, 本文將介紹如何監控 Javc GC 行為,同時涉及一些GUI工具的使用(雖然有些已經很老並不再更新),監控GC在於判斷JVM是否在良好高效地工作並且是否需要投入效能調優(主要包括應用程
檢視Full GC方法:1,jconsel:2,linux 命令: jstat -gcutil id 4s 10003,linux 命令(前提有.gc日誌):c
1,jconsel: 2,linux 命令: jstat -gcutil id 4s 10003,linux 命令(前提有.gc日誌):cd /mapbar/app/tomcat/tomcat6_du
理解Java的GC日誌
一、日誌分析 理解GC日誌是處理Java虛擬機器記憶體問題的基本技能,下面我們具體來看看。 通過在java命令種加入引數來指定對應的gc型別,列印gc日誌資訊並輸出至檔案等策略。 1、編寫java程式碼 public class ReferenceCountingG
Java JVM(二):垃圾回收概念 與 GC 日誌
包括: 一. 垃圾回收基本概念 二. GC日誌一. 垃圾回收基本概念 在JVM 中,最需要進行回收的地方就是JVM 方法區 和 JVM 堆。1.1 可達性分析演算法 回收的時候,主要是根據可達性分析演算法。如果一個物件不可達,那麼就是可以回收
Java GC CMS 日誌分析
原文連結: 筆者對其中某幾條記錄又進行了詳細說明,以下是一條完整的CMS日誌記錄的示例,外加一些記憶體分配錯誤的情況。 看之前最好對GC的新生代(Young Generation)和老生代(Old Generation)以及晉升過程(Promotion)都有深刻理解,本文