1. 程式人生 > >Java GC日誌檢視

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程式碼  收藏程式碼
  1. jinfo –flag UseSerialGC 程序  

的方式可以定位其使用的gc策略,因為這些引數都是boolean型的常量,如果使用該種gc策略會出現+號,否則-號。

使用-XX:+上述GC策略可以開啟對應的GC策略。

GC日誌檢視

可以通過在java命令種加入引數來指定對應的gc型別,列印gc日誌資訊並輸出至檔案等策略。

GC的日誌是以替換的方式(>)寫入的,而不是追加(>>),如果下次寫入到同一個檔案中的話,以前的GC內容會被清空。

對應的引數列表

Java程式碼  收藏程式碼
  1. -XX:+PrintGC 輸出GC日誌  
  2. -XX:+PrintGCDetails 輸出GC的詳細日誌  
  3. -XX:+PrintGCTimeStamps 輸出GC的時間戳(以基準時間的形式)  
  4. -XX:+PrintGCDateStamps 輸出GC的時間戳(以日期的形式,如 2013-05-04T21:53:59.234
    +0800)  
  5. -XX:+PrintHeapAtGC 在進行GC的前後打印出堆的資訊  
  6. -Xloggc:../logs/gc.log 日誌檔案的輸出路徑  

這裡使用如下的引數來進行日誌的列印:

Java程式碼  收藏程式碼
  1. -XX:+PrintGCDateStamps -XX:+PrintGCDetails -Xloggc:./gclogs  

對於新生代回收的一行日誌,其基本內容如下:

Java程式碼  收藏程式碼
  1. 2014-07-18T16:02:17.606+0800611.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程式碼  收藏程式碼
  1. 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程式碼  收藏程式碼
  1. 2014-07-18T16:19:16.794+08001630.821: [GC 1630.821: [DefNew: 1005567K->111679K(1005568K), 0.9152360 secs]1631.736: [Tenured:  
  2. 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程式碼  收藏程式碼
  1. Heap  
  2.  def new generation   total 1005568K, used 111158K [0x00000006fae000000x000000073f1100000x0000000750350000)  
  3.   eden space 893888K,  12% used [0x00000006fae000000x0000000701710e900x00000007316f0000)  
  4.   from space 111680K,   3% used [0x00000007384000000x000000073877c9b00x000000073f110000)  
  5.   to   space 111680K,   0% used [0x00000007316f00000x00000007316f00000x0000000738400000)  
  6.  tenured generation   total 2234420K, used 1347671K [0x00000007503500000x00000007d895d0000x00000007fae00000)  
  7.    the space 2234420K,  60% used [0x00000007503500000x00000007a2765cb80x00000007a2765e000x00000007d895d000)  
  8.  compacting perm gen  total 21248K, used 17994K [0x00000007fae000000x00000007fc2c00000x0000000800000000)  
  9.    the space 21248K,  84% used [0x00000007fae000000x00000007fbf92a500x00000007fbf92c000x00000007fc2c0000)  
  10. 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

理解JavaGC日誌

一、日誌分析  理解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)都有深刻理解,本文