1. 程式人生 > >JVM學習之GC日誌

JVM學習之GC日誌

-XX:+PrintGCDateStamps -XX:+PrintGCDetails -Xloggc:d:/gc_log/gc.log


package com.tets;
public class ReferenceCountingGC {
	 public Object instance = null;
	    private static final int _1MB = 1024*1024;
	    private byte[] bigSize = new byte[2 * _1MB];
	    public static void testGC(){
	    	ReferenceCountingGC obja =new ReferenceCountingGC();
	    	ReferenceCountingGC objb = new ReferenceCountingGC();

	        obja.instance =objb;
	        objb.instance =obja;

	        obja = null;
	        objb = null;

	        System.gc();
	        System.out.println("--------------");

	    }

	    public static void main(String[] args) {
	        testGC();
	    }
}


2017-08-30T22:03:53.744+0800: 1.202: [GC 1.210: [DefNew: 2505K->170K(4928K), 0.0270798 secs] 2505K->2219K(15872K), 0.0353489 secs] [Times: user=0.00 sys=0.00, real=0.04 secs] 
2017-08-30T22:03:53.779+0800: 1.238: [Full GC (System) 1.238: [Tenured: 2048K->170K(10944K), 0.0548002 secs] 4267K->170K(15872K), [Perm : 2335K->2335K(12288K)], 0.0554659 secs] [Times: user=0.01 sys=0.00, real=0.06 secs] 
Heap
 def new generation   total 4992K, used 96K [0x04510000, 0x04a70000, 0x09a60000)
  eden space 4480K,   2% used [0x04510000, 0x04528028, 0x04970000)
  from space 512K,   0% used [0x04970000, 0x04970000, 0x049f0000)
  to   space 512K,   0% used [0x049f0000, 0x049f0000, 0x04a70000)
 tenured generation   total 10944K, used 170K [0x09a60000, 0x0a510000, 0x14510000)
   the space 10944K,   1% used [0x09a60000, 0x09a8abd0, 0x09a8ac00, 0x0a510000)
 compacting perm gen  total 12288K, used 2347K [0x14510000, 0x15110000, 0x18510000)
   the space 12288K,  19% used [0x14510000, 0x1475af30, 0x1475b000, 0x15110000)
No shared spaces configured.


相關推薦

JVM學習GC日誌

-XX:+PrintGCDateStamps -XX:+PrintGCDetails -Xloggc:d:/gc_log/gc.log package com.tets; public class R

jvm系列-gc日誌檢視

在上一篇中我們介紹的有引數的設定,那我們要了解不同的引數對於程式的影響和對於調優的影響,這個時候我們就需要檢視gc日誌來看我們設定的引數是否合理,這一章節中我們就來檢視gc日誌 一、新生代和老年代的比值對效能的影響 Map map = new HashMap<&

JVM系列第14講:JVM引數GC日誌配置

說到 Java 虛擬機器,不得不提的就是 Java 虛擬機器的 GC(Garbage Collection)日誌。而對於 GC 日誌,我們不僅要學會看懂,而且要學會如何設定對應的 GC 日誌引數。今天就讓我們來學習一下 Java 虛擬機器中所有與 GC 日誌有關的引數。相信掌握了這些引數之後,對於大家線上列印

JVM學習GC流程和GC策略

GC流程 對於GC流程裡面需要處理的是年輕代和老年代的記憶體空間,而元空間(永久代)都不在GC範疇。 1、現在有一個新物件產生,那麼物件一定需要記憶體空間,於是現在需要為該物件進行記憶體空間的申請。 2、首先會判斷伊甸園區是否有記憶體空間,如果

JVM學習1 GC日誌理解

    為了觀察GC日誌,我們需要設定JVM啟動引數:     -XX:+PrintGCDetails-----------------------------表示詳細的GC日誌的輸出 下面程式程式碼是我摘抄《深入理解JVM》這個本書

JVM學習1 GC日誌理解

    為了觀察GC日誌,我們需要設定JVM啟動引數:     -XX:+PrintGCDetails-----------------------------表示詳細的GC日誌的輸出 下面程式程式碼是我摘抄《深入理解JVM》這個本書上的一個示例; public c

jvmgc日誌

日誌 details you 通過 detail fullgc parallel 分享 技術 ava GC日誌可以通過 +PrintGCDetails開啟 以ParallelGC為例 YoungGC日誌解釋如下 FullGC: jvm之gc日誌

Linux學習路--日誌管理【17】---20180113

ocs title 軟件 config mil 集中 auto 表示 rap 一、日誌介紹日誌: 歷史事件:時間,地點,人物,事件 日誌級別:事件的關鍵性程度,Loglevel系統日誌服務:sysklogd :CentOS 5之前版本 syslog

JVM學習-對象的創建和內存分配

point IV www 方法區 包括 軌跡 from con 指定 最近看JVM內存模型,看了很多文章,大都講到JVM將內存區域劃分分:Mehtod-Area(No heap) 方法區,Heap(堆)區,Program Counter Register(程序計數

JVM學習java記憶體模型

JVM學習之java記憶體模型 以下blog內容來自《深入理解Java虛擬機器_JVM高階特性與最佳實踐》感謝作者!! java虛擬機器規範定義了一種java記憶體模型(JMM)來遮蔽不同硬體和作業系統的差異,達到跨平臺執行效果,記憶體模型的定義一個宗旨就是併發記憶體訪問操作不會產生

JVM學習java執行緒實現&排程和狀態轉換

以下blog內容來自《深入理解Java虛擬機器_JVM高階特性與最佳實踐》感謝作者! 1 謹慎使用java 多執行緒   如何提升效率:      使用java時推薦利用多執行緒處理一些操作絕大多數情況下確實能提高效率,提高效率的原理

JVM學習垃圾收集演算法

以下blog內容來自《深入理解Java虛擬機器_JVM高階特性與最佳實踐》,感謝作者! 昨天下班後地鐵上和以前的同學交談,才知道永遠不嘗試新東西永遠不會有新思路,希望寫完基礎系列之後自己能有所進步,然後分析更多有用的東西。 1垃圾收集演算法分類      

jvm學習java記憶體區域

java虛擬機器在執行java程式的過程中會把它所管理的記憶體劃分為若干不同區域:有些是依賴使用者執行緒的啟動和結束而建立和銷燬的,有的則是隨著虛擬機器程序的啟動而存在。 執行緒共享區域:方法區 、堆。 執行緒隔離(各個執行緒獨有區域)虛擬機器棧、本地方法棧、程式計數器。  

JVM學習物件記憶體佈局,物件頭

本篇內容來自《深入理解Java虛擬機器_JVM高階特性與最佳實踐》,感謝作者。 建立物件之後需要使用物件,java中除了對物件屬性方法的呼叫以外還有加鎖實現同步等其他操作,這裡的鎖加在了哪裡,如何記錄鎖,如何對鎖進行分類(有物件鎖,class鎖),垃圾回收機制中有關於GC的

JVM學習java執行緒實現&排程和狀態轉換

1 謹慎使用java 多執行緒   如何提升效率:      使用java時推薦利用多執行緒處理一些操作絕大多數情況下確實能提高效率,提高效率的原理在哪裡呢,為什麼說絕大多說情況呢。        在CPU單核時代,我們知道某一時刻工作的執行緒只能是一條,那多執行緒為什

JVM學習:淺談方法呼叫以及Override/Overload的原理

提到方法呼叫,我想大多數人的第一反應就是執行一個方法唄,其實在虛擬機器的眼裡方法呼叫只是確定他要呼叫哪個方法而已,和方法的執行還是有比較大的區別的.任何一個層序的執行都離不開方法的呼叫以及方法的執行,但是在JVM學習之:虛擬機器中的執行時棧幀總結(二)提到過,在Class檔

JVM學習Java類載入

Java類載入 我們知道,java原始碼(*.java)不能直接執行,我們需要通過java編譯器javac.exe將原始碼編譯為java字解碼檔案(*.class),然後再通過java.exe在JVM中解釋此程式。 一、Java程式執行流程 二、類載入

JVM實用引數 GC日誌

GC日誌是一個很重要的工具,它準確記錄了每一次的GC的執行時間和執行結果,通過分析GC日誌可以優化堆設定和GC設定,或者改進應用程式的物件分配模式。 -XX:+PrintGC 引數-XX:+PrintGC(或者-verbose:gc)開啟了簡單GC日誌模式,為每一次

JVM學習物件的管理

概述: 本文主要講述了JAVA中物件建立、訪問、及其記憶體佈局。 物件的建立: 1.記憶體分配: 物件建立首先要申請記憶體,在JVM中有兩種記憶體管理的辦法:指標碰撞與空閒列表。如果JVM的垃圾回收機制中,能夠自動的整理物件,將物件緊密聯絡的排列在記

JVM實用引數GC日誌

GC日誌是一個很重要的工具,它準確記錄了每一次的GC的執行時間和執行結果,通過分析GC日誌可以優化堆設定和GC設定,或者改進應用程式的物件分配模式。 -XX:+PrintGC 引數-XX:+PrintGC(或者-verbose:gc)開啟了簡單GC日誌模式,為每一次新生