真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Java虛擬機GC日志分析的案例-創(chuàng)新互聯(lián)

這篇文章將為大家詳細講解有關(guān)Java虛擬機GC日志分析的案例,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

10年積累的成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認識你,你也不認識我。但先網(wǎng)站設(shè)計后付款的網(wǎng)站建設(shè)流程,更有桐城免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。一、日志分析

理解GC日志是處理Java虛擬機內(nèi)存問題的基本技能。

通過在java命令種加入?yún)?shù)來指定對應(yīng)的gc類型,打印gc日志信息并輸出至文件等策略。

1、編寫java代碼
public class ReferenceCountingGC {
	public Object instance = null;
	private static final int ONE_MB = 1024 * 1024;
	private byte[] bigSize = new byte[2 * ONE_MB];
	public static void main(String[] args) {
		testGC();
	}
	public static void testGC() {
		ReferenceCountingGC objA = new ReferenceCountingGC();
		ReferenceCountingGC objB = new ReferenceCountingGC();
		objA.instance = objB;
		objB.instance = objA;
		objA = null;
		objB = null;
		System.gc();
	}
}
2、編譯java文件
javac ReferenceCountingGC.java
3、執(zhí)行class文件
java -XX:+PrintGCDateStamps -XX:+PrintGCDetails ReferenceCountingGC

對應(yīng)的參數(shù)列表

-XX:+PrintGC 輸出GC日志
-XX:+PrintGCDetails 輸出GC的詳細日志
-XX:+PrintGCTimeStamps 輸出GC的時間戳(以基準時間的形式)
-XX:+PrintGCDateStamps 輸出GC的時間戳(以日期的形式,如 2013-05-04T21:53:59.234+0800)
-XX:+PrintHeapAtGC 在進行GC的前后打印出堆的信息
-Xloggc:../logs/gc.log 日志文件的輸出路徑

結(jié)果輸出:

2016-03-20T14:34:55.118-0800: [GC [PSYoungGen: 6123K->400K(38912K)] 6123K->400K(125952K), 0.0012070 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
2016-03-20T14:34:55.119-0800: [Full GC [PSYoungGen: 400K->0K(38912K)] [ParOldGen: 0K->282K(87040K)] 400K->282K(125952K) [PSPermGen: 2622K->2621K(21504K)], 0.0084640 secs] [Times: user=0.01 sys=0.00, real=0.01 secs]
Heap
PSYoungGen total 38912K, used 1013K [0x00000007d5500000, 0x00000007d8000000, 0x0000000800000000)
eden space 33792K, 3% used [0x00000007d5500000,0x00000007d55fd7d0,0x00000007d7600000)
from space 5120K, 0% used [0x00000007d7600000,0x00000007d7600000,0x00000007d7b00000)
to space 5120K, 0% used [0x00000007d7b00000,0x00000007d7b00000,0x00000007d8000000)
ParOldGen total 87040K, used 282K [0x0000000780000000, 0x0000000785500000, 0x00000007d5500000)
object space 87040K, 0% used [0x0000000780000000,0x0000000780046bf8,0x0000000785500000)
PSPermGen total 21504K, used 2628K [0x000000077ae00000, 0x000000077c300000, 0x0000000780000000)
object space 21504K, 12% used [0x000000077ae00000,0x000000077b091380,0x000000077c300000)

PSYoungGen表示新生代,這個名稱由收集器決定,這里的收集器是Parallel Scavenge。老年代為ParOldGen,永久代為PSPermGen

  • 如果收集器為ParNew收集器,新生代為ParNew,Parallel New Generation

  • 如果收集器是Serial收集器,新生代為DefNew,Default New Generation

可以看到上面有兩種GC類型:GC和Full GC,有Full表示這次GC是發(fā)生了Stop-The-World的。

新生代GC(Minor GC):指發(fā)生在新生代的垃圾收集動作,因為Java對象大多都具備朝生夕滅的特性,所以Minor GC非常頻繁,一般回收速度非??臁?/p>

老年代GC(Major GC/Full GC):指發(fā)生在老年代的GC,出現(xiàn)了Major GC,經(jīng)常會伴隨至少一次的Minor GC,Major GC的速度一般會比Minor GC慢10倍以上。

[GC [PSYoungGen: 6123K->400K(38912K)] 6123K->400K(125952K), 0.0012070 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]

上面方括號內(nèi)部的6123K->400K(38912K),表示GC前該內(nèi)存區(qū)域已使用容量->GC后該內(nèi)存區(qū)域已使用容量,后面圓括號里面的38912K為該內(nèi)存區(qū)域的總?cè)萘俊?/p>

方括號外面的6123K->400K(125952K),表示GC前Java堆已使用容量->GC后Java堆已使用容量,后面圓括號里面的125952K為Java堆總?cè)萘俊?/p>

[Times: user=0.00 sys=0.00, real=0.00 secs]分別表示用戶消耗的CPU時間,內(nèi)核態(tài)消耗的CPU時間和操作從開始到結(jié)束所經(jīng)過的墻鐘時間(Wall Clock Time),CPU時間和墻鐘時間的差別是,墻鐘時間包括各種非運算的等待耗時,例如等待磁盤I/O、等待線程阻塞,而CPU時間不包括這些耗時。

關(guān)于“Java虛擬機GC日志分析的案例”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。


分享標題:Java虛擬機GC日志分析的案例-創(chuàng)新互聯(lián)
本文來源:http://weahome.cn/article/dgcsij.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部