簡單GC具體操作參數(shù)查看

代碼:

public class HeapTest {
    private static final int _1M = 1024 * 1024;

    public static void main(String[] args) throws InterruptedException {
        System.gc();
        byte[] byte1 = new byte[2 * _1M];
        byte[] byte2 = new byte[2 * _1M];
        byte[] byte3 = new byte[2 * _1M];
        byte[] byte4 = new byte[2 * _1M];
        byte[] byte5 = new byte[2 * _1M];
        byte[] byte6 = new byte[5 * _1M];

        byte[] byte7 = new byte[2 * _1M];

        System.out.println("asdf");
    }
}

注意byte6是5M

vm參數(shù):

-Xms20m
-Xmx20m
-Xmn10m
-verbose:gc
-XX:+PrintGCDetails
-XX:+PrintTenuringDistribution
-XX:+PrintGCTimeStamps

分別打上斷點,使用

$ jmap -heap 17432

System.gc

1.049: [GC (System.gc()) 
Desired survivor size 1048576 bytes, new threshold 7 (max 15)
[PSYoungGen: 6657K->1000K(9216K)] 6657K->1337K(19456K), 0.0015197 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
1.051: [Full GC (System.gc()) [PSYoungGen: 1000K->0K(9216K)] [ParOldGen: 337K->1290K(10240K)] 1337K->1290K(19456K), [Metaspace: 3777K->3777K(1056768K)], 0.0063289 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] 

GC日志分析

Young GC日志:

image

Full GC日志:

image

堆信息:

查看堆信息:

$ jps  -l
11120 com.qhong.gc.HeapTest
11652 sun.tools.jps.Jps
18708 com.shitou.Application
11352
18200 org.jetbrains.jps.cmdline.Launcher
13644 org.jetbrains.jps.cmdline.Launcher

jmap:

$ jmap -heap 11120
Attaching to process ID 11120, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.201-b09

using thread-local object allocation.
Parallel GC with 4 thread(s)

Heap Configuration:
   MinHeapFreeRatio         = 0                
   MaxHeapFreeRatio         = 100         #GC后如果發(fā)現(xiàn)空閑堆內(nèi)存占到整個預(yù)估堆內(nèi)存的N%(百分比)  
   MaxHeapSize              = 20971520 (20.0MB)    # 堆最大空閑    jvm參數(shù) -Xms20m
   NewSize                  = 10485760 (10.0MB)    # 年輕代空間    jvm參數(shù) -Xmn10m
   MaxNewSize               = 10485760 (10.0MB)    # 年輕代最大空間
   OldSize                  = 10485760 (10.0MB)    # 老年代空間 =(等于)堆內(nèi)存大小 -(減去)年輕代大小
   NewRatio                 = 2   
   SurvivorRatio            = 8   # 年輕代內(nèi)存又被分成三部分 Eden 空間 80% 而From Survivor 空間 和 To Survivor空間 分別占用10%
   MetaspaceSize            = 21807104 (20.796875MB) # 設(shè)置元空間的最大值 jvm參數(shù) -XX:MaxMetaspaceSize
   CompressedClassSpaceSize = 1073741824 (1024.0MB)  # 類指針壓縮空間大小迎献, 默認(rèn)為1G
   MaxMetaspaceSize         = 17592186044415 MB    # 是分配給類元數(shù)據(jù)空間的最大值
   G1HeapRegionSize         = 0 (0.0MB) # G1區(qū)塊的大小只嚣, 取值為1M至32M. 其取值是要根據(jù)最小Heap大小劃分出2048個區(qū)塊

Heap Usage:
PS Young Generation
Eden Space:
   capacity = 8388608 (8.0MB)
   used     = 167792 (0.1600189208984375MB)
   free     = 8220816 (7.8399810791015625MB)
   2.0002365112304688% used
From Space:
   capacity = 1048576 (1.0MB)
   used     = 0 (0.0MB)
   free     = 1048576 (1.0MB)
   0.0% used
To Space:
   capacity = 1048576 (1.0MB)
   used     = 0 (0.0MB)
   free     = 1048576 (1.0MB)
   0.0% used
PS Old Generation
   capacity = 10485760 (10.0MB)
   used     = 1321344 (1.2601318359375MB)
   free     = 9164416 (8.7398681640625MB)
   12.601318359375% used

2072 interned Strings occupying 186064 bytes.

byte1執(zhí)行后

Eden Space:
   capacity = 8388608 (8.0MB)
   used     = 2428440 (2.3159408569335938MB)
   free     = 5960168 (5.684059143066406MB)
   28.949260711669922% used
From Space:
   capacity = 1048576 (1.0MB)
   used     = 0 (0.0MB)
   free     = 1048576 (1.0MB)
   0.0% used
To Space:
   capacity = 1048576 (1.0MB)
   used     = 0 (0.0MB)
   free     = 1048576 (1.0MB)
   0.0% used
PS Old Generation
   capacity = 10485760 (10.0MB)
   used     = 1321480 (1.2602615356445312MB)
   free     = 9164280 (8.739738464355469MB)
   12.602615356445312% used

byte2執(zhí)行后

Eden Space:
   capacity = 8388608 (8.0MB)
   used     = 4525528 (4.315879821777344MB)
   free     = 3863080 (3.6841201782226562MB)
   53.9484977722168% used
From Space:
   capacity = 1048576 (1.0MB)
   used     = 0 (0.0MB)
   free     = 1048576 (1.0MB)
   0.0% used
To Space:
   capacity = 1048576 (1.0MB)
   used     = 0 (0.0MB)
   free     = 1048576 (1.0MB)
   0.0% used
PS Old Generation
   capacity = 10485760 (10.0MB)
   used     = 1321344 (1.2601318359375MB)
   free     = 9164416 (8.7398681640625MB)
   12.601318359375% used

byte3執(zhí)行后

Eden Space:
   capacity = 8388608 (8.0MB)
   used     = 6622696 (6.315895080566406MB)
   free     = 1765912 (1.6841049194335938MB)
   78.94868850708008% used
From Space:
   capacity = 1048576 (1.0MB)
   used     = 0 (0.0MB)
   free     = 1048576 (1.0MB)
   0.0% used
To Space:
   capacity = 1048576 (1.0MB)
   used     = 0 (0.0MB)
   free     = 1048576 (1.0MB)
   0.0% used
PS Old Generation
   capacity = 10485760 (10.0MB)
   used     = 1321344 (1.2601318359375MB)
   free     = 9164416 (8.7398681640625MB)
   12.601318359375% used

byte4執(zhí)行后

gc:

247.099: [GC (Allocation Failure) 
Desired survivor size 1048576 bytes, new threshold 7 (max 15)
[PSYoungGen: 6467K->0K(9216K)] 7757K->7434K(19456K), 0.0041433 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
247.104: [Full GC (Ergonomics) [PSYoungGen: 0K->0K(9216K)] [ParOldGen: 7434K->7109K(10240K)] 7434K->7109K(19456K), [Metaspace: 3769K->3769K(1056768K)], 0.0083147 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] 

heap:

Eden Space:
   capacity = 8388608 (8.0MB)
   used     = 2181072 (2.0800323486328125MB)
   free     = 6207536 (5.9199676513671875MB)
   26.000404357910156% used
From Space:
   capacity = 1048576 (1.0MB)
   used     = 0 (0.0MB)
   free     = 1048576 (1.0MB)
   0.0% used
To Space:
   capacity = 1048576 (1.0MB)
   used     = 0 (0.0MB)
   free     = 1048576 (1.0MB)
   0.0% used
PS Old Generation
   capacity = 10485760 (10.0MB)
   used     = 7280080 (6.9428253173828125MB)
   free     = 3205680 (3.0571746826171875MB)
   69.42825317382812% used

byte5執(zhí)行后

Eden Space:
   capacity = 8388608 (8.0MB)
   used     = 4421640 (4.216804504394531MB)
   free     = 3966968 (3.7831954956054688MB)
   52.71005630493164% used
From Space:
   capacity = 1048576 (1.0MB)
   used     = 0 (0.0MB)
   free     = 1048576 (1.0MB)
   0.0% used
To Space:
   capacity = 1048576 (1.0MB)
   used     = 0 (0.0MB)
   free     = 1048576 (1.0MB)
   0.0% used
PS Old Generation
   capacity = 10485760 (10.0MB)
   used     = 7280080 (6.9428253173828125MB)
   free     = 3205680 (3.0571746826171875MB)
   69.42825317382812% used

byte6執(zhí)行后

GC:

337.887: [Full GC (Ergonomics) [PSYoungGen: 4318K->2048K(9216K)] [ParOldGen: 7109K->9157K(10240K)] 11427K->11205K(19456K), [Metaspace: 3769K->3769K(1056768K)], 0.0064432 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] 

Heap:

Eden Space:
   capacity = 8388608 (8.0MB)
   used     = 7340064 (7.000030517578125MB)
   free     = 1048544 (0.999969482421875MB)
   87.50038146972656% used
From Space:
   capacity = 1048576 (1.0MB)
   used     = 0 (0.0MB)
   free     = 1048576 (1.0MB)
   0.0% used
To Space:
   capacity = 1048576 (1.0MB)
   used     = 0 (0.0MB)
   free     = 1048576 (1.0MB)
   0.0% used
PS Old Generation
   capacity = 10485760 (10.0MB)
   used     = 9377000 (8.942604064941406MB)
   free     = 1108760 (1.0573959350585938MB)
   89.42604064941406% used

byte7執(zhí)行后

370.908: [Full GC (Ergonomics) [PSYoungGen: 7168K->7168K(9216K)] [ParOldGen: 9157K->9157K(10240K)] 16325K->16325K(19456K), [Metaspace: 3769K->3769K(1056768K)], 0.0045883 secs] [Times: user=0.02 sys=0.00, real=0.00 secs] 
370.913: [Full GC (Allocation Failure) [PSYoungGen: 7168K->7168K(9216K)] [ParOldGen: 9157K->9157K(10240K)] 16325K->16325K(19456K), [Metaspace: 3769K->3769K(1056768K)], 0.0028624 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at com.qhong.gc.HeapTest.main(HeapTest.java:18)
Heap
 PSYoungGen      total 9216K, used 7368K [0x00000000ff600000, 0x0000000100000000, 0x0000000100000000)
  eden space 8192K, 89% used [0x00000000ff600000,0x00000000ffd32238,0x00000000ffe00000)
  from space 1024K, 0% used [0x00000000fff00000,0x00000000fff00000,0x0000000100000000)
  to   space 1024K, 0% used [0x00000000ffe00000,0x00000000ffe00000,0x00000000fff00000)
 ParOldGen       total 10240K, used 9157K [0x00000000fec00000, 0x00000000ff600000, 0x00000000ff600000)
  object space 10240K, 89% used [0x00000000fec00000,0x00000000ff4f14e8,0x00000000ff600000)
 Metaspace       used 3799K, capacity 4596K, committed 4864K, reserved 1056768K
  class space    used 414K, capacity 432K, committed 512K, reserved 1048576K
Disconnected from the target VM, address: '127.0.0.1:6560', transport: 'socket'

發(fā)現(xiàn)一開始eden區(qū)就不是空的

如果一開始不執(zhí)行System.gc(),那么除了eden區(qū),其他區(qū)都是空的洛波,包括老年代也是空的

參考:

《深入理解Java虛擬機》(六)堆內(nèi)存使用分析胰舆,垃圾收集器 GC 日志解讀

Jvm 系列(五):Java GC 分析

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市蹬挤,隨后出現(xiàn)的幾起案子缚窿,更是在濱河造成了極大的恐慌,老刑警劉巖焰扳,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件倦零,死亡現(xiàn)場離奇詭異,居然都是意外死亡吨悍,警方通過查閱死者的電腦和手機扫茅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來育瓜,“玉大人葫隙,你說我怎么就攤上這事□锍穑” “怎么了恋脚?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長焰手。 經(jīng)常有香客問我慧起,道長,這世上最難降的妖魔是什么册倒? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任蚓挤,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘灿意。我一直安慰自己估灿,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布缤剧。 她就那樣靜靜地躺著馅袁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪荒辕。 梳的紋絲不亂的頭發(fā)上汗销,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天,我揣著相機與錄音抵窒,去河邊找鬼弛针。 笑死,一個胖子當(dāng)著我的面吹牛李皇,可吹牛的內(nèi)容都是我干的削茁。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼掉房,長吁一口氣:“原來是場噩夢啊……” “哼茧跋!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起卓囚,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤瘾杭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后哪亿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體富寿,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年锣夹,在試婚紗的時候發(fā)現(xiàn)自己被綠了页徐。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡银萍,死狀恐怖变勇,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情贴唇,我是刑警寧澤搀绣,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站戳气,受9級特大地震影響链患,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜瓶您,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一麻捻、第九天 我趴在偏房一處隱蔽的房頂上張望纲仍。 院中可真熱鬧,春花似錦贸毕、人聲如沸郑叠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽乡革。三九已至,卻和暖如春摊腋,著一層夾襖步出監(jiān)牢的瞬間沸版,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工兴蒸, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留视粮,地道東北人。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓类咧,卻偏偏與公主長得像馒铃,于是被迫代替她去往敵國和親蟹腾。 傳聞我的和親對象是個殘疾皇子痕惋,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容