亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

解讀JDK1.8?默認(rèn)使用什么垃圾收集器

 更新時間:2023年05月29日 08:49:35   作者:FRESH_9527  
這篇文章主要介紹了解讀JDK1.8?默認(rèn)使用什么垃圾收集器,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

JDK1.8 默認(rèn)使用什么垃圾收集器

使用java -XX:+PrintCommandLineFlags -version查看一下

-XX:InitialHeapSize=132500864 //初始堆大小
-XX:MaxHeapSize=2120013824 ? ?//最大堆大小
-XX:+PrintCommandLineFlags ? ?//程序運行前打印出用戶手動設(shè)置或者JVM自動設(shè)置的XX選項,因為我們執(zhí)行時間加上了這個選項,所以這里會打印出來
-XX:+UseCompressedClassPointers // 默認(rèn)開啟類指針壓縮
-XX:+UseCompressedOops ?// 默認(rèn)開啟對象指針壓縮
-XX:-UseLargePagesIndividualAllocation
-XX:+UseParallelGC // 默認(rèn)使用Parallel垃圾收集器
java version "1.8.0_221" // jdk版本
Java(TM) SE Runtime Environment (build 1.8.0_221-b11) // jre
Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode) // Hotspot虛擬機,Server模式,混合編譯

或者使用java -XX:+PrintFlagsFinal 查看亦可。可以看到UseParellelGC和UseParellelOldGC兩個選項都是打開的,即JDK1.8中默認(rèn)使用的是Parallel Scavenge和Parallel Old收集器組合。

我可也可以寫一個堆溢出的小demo打印GC信息:

 PSYoungGen      total 6144K, used 3224K [0x00000000ff980000, 0x0000000100000000, 0x0000000100000000)
                            eden space 5632K, 57% used [0x00000000ff980000,0x00000000ffca6230,0x00000000fff00000)
                            from space 512K, 0% used [0x00000000fff80000,0x00000000fff80000,0x0000000100000000)
                            to   space 512K, 0% used [0x00000000fff00000,0x00000000fff00000,0x00000000fff80000)
 ParOldGen       total 13824K, used 13440K [0x00000000fec00000, 0x00000000ff980000, 0x00000000ff980000)
                          object space 13824K, 97% used [0x00000000fec00000,0x00000000ff920338,0x00000000ff980000)
 Metaspace       used 2681K, capacity 4486K, committed 4864K, reserved 1056768K
                         class space    used 286K, capacity 386K, committed 512K, reserved 1048576K

PSYoungGen 表示的是由Parallel Scavenge垃圾收集器管理的新生代,ParOldGen表示由Parallel Old管理的老年代。

jdk1.8默認(rèn)垃圾回收器的組合

問題是什么?

線上運行的項目,在不指定jvm運行參數(shù)的情況下,默認(rèn)的垃圾回收器的組合是什么?

針對網(wǎng)上一大堆的介紹,個人覺得可能是我自己沒有理解吧,總感覺有一些問題,或者欠缺點什么?

網(wǎng)上的言論大體上有一下兩種:

  • ps + po
  • ps + so

究竟哪個是正確的呢?

答案是:ps + po

驗證

我這里有幾個java進程

[root@Game-TEST ~ 00:47:06]# jps
14576 CrossFamilyTopServerStart
14352 Start
1797 jar
[root@Game-TEST ~ 00:47:25]# jinfo -flags 14352
Attaching to process ID 14352, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.121-b13
Non-default VM flags: -XX:CICompilerCount=4 -XX:InitialHeapSize=264241152 -XX:MaxHeapSize=4217372672 -XX:MaxNewSize=1405616128 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=88080384 -XX:OldSize=176160768 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGC

可以看到這里默認(rèn)的jvm運行參數(shù)為:-XX:+UseParallelGC,查看周志明老師深入理解java虛擬機中關(guān)于垃圾回收器的介紹來看,這個參數(shù)對應(yīng)的垃圾回收器的組合應(yīng)該為:ps + so(紅色框選中的部分)

乍一看!這是為什么呢,不是說默認(rèn)的是ps + po么?

這就涉及到j(luò)dk版本的問題了,可以看看參考資料里面的描述:大致意思就是在jdk1.8以后-XX:+UseParallelGC是默認(rèn)開啟的,所以垃圾回收器的組合就是ps+po,但是為什么命令行的顯示來看這個參數(shù)沒有被指定呢?這個。。。。。不懂,留著后面再看吧!

我們也可以用下面的指令來查看,現(xiàn)在想想這個應(yīng)該是最直接的!

[root@Game-TEST ~ 00:55:50]# java -XX:+PrintGCDetails -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
Heap
 PSYoungGen      total 75264K, used 2580K [0x000000076c380000, 0x0000000771780000, 0x00000007c0000000)
  eden space 64512K, 4% used [0x000000076c380000,0x000000076c605368,0x0000000770280000)
  from space 10752K, 0% used [0x0000000770d00000,0x0000000770d00000,0x0000000771780000)
  to   space 10752K, 0% used [0x0000000770280000,0x0000000770280000,0x0000000770d00000)
 ParOldGen       total 172032K, used 0K [0x00000006c4a00000, 0x00000006cf200000, 0x000000076c380000)
  object space 172032K, 0% used [0x00000006c4a00000,0x00000006c4a00000,0x00000006cf200000)
 Metaspace       used 2216K, capacity 4480K, committed 4480K, reserved 1056768K
  class space    used 243K, capacity 384K, committed 384K, reserved 1048576K

出現(xiàn)了ParOldGen這個就是po的垃圾回收器了,所以默認(rèn)情況下jdk1.8的默認(rèn)垃圾回收器的組合為:ps+po!

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Kotlin基礎(chǔ)教程之Run,標(biāo)簽Label,函數(shù)Function-Type

    Kotlin基礎(chǔ)教程之Run,標(biāo)簽Label,函數(shù)Function-Type

    這篇文章主要介紹了Kotlin基礎(chǔ)教程之Run,標(biāo)簽Label,函數(shù)Function-Type的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • 在SpringBoot中如何利用Redis實現(xiàn)互斥鎖

    在SpringBoot中如何利用Redis實現(xiàn)互斥鎖

    當(dāng)我們利用Redis存儲熱點數(shù)據(jù)時,突然就過期失效或者被刪除了,導(dǎo)致大量請求同時訪問數(shù)據(jù)庫,增加了數(shù)據(jù)庫的負(fù)載,為減輕數(shù)據(jù)庫的負(fù)載我們利用互斥鎖,本文重點介紹在SpringBoot中如何利用Redis實現(xiàn)互斥鎖,感興趣的朋友一起看看吧
    2023-09-09
  • Java WeakHashMap案例詳解

    Java WeakHashMap案例詳解

    這篇文章主要介紹了Java WeakHashMap案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • java微信企業(yè)號開發(fā)之通訊錄

    java微信企業(yè)號開發(fā)之通訊錄

    這篇文章主要為大家詳細(xì)介紹了java微信企業(yè)號開發(fā)之通訊錄的相關(guān)資料,感興趣的小伙伴們可以參考一下
    2016-06-06
  • java9區(qū)分opens與exports

    java9區(qū)分opens與exports

    本篇文章主要給大家講述了java9中opens與exports的區(qū)別以及用法的不同之處,一起學(xué)習(xí)下吧。
    2018-02-02
  • SpringBoot使用redis實現(xiàn)session共享功能

    SpringBoot使用redis實現(xiàn)session共享功能

    這篇文章主要介紹了pringboot項目使用redis實現(xiàn)session共享,文中通過代碼示例講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-05-05
  • Java獲得指定區(qū)間數(shù)的方法

    Java獲得指定區(qū)間數(shù)的方法

    這篇文章主要介紹了Java獲得指定區(qū)間數(shù)的方法,涉及java數(shù)值運算的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • Java的后臺文件夾下文件的遍歷完整代碼

    Java的后臺文件夾下文件的遍歷完整代碼

    這篇文章主要介紹了Java的后臺文件夾下文件的遍歷完整代碼,首先分享了java中遍歷一個文件夾里邊的所有文件,然后介紹了用Java遍歷一個文件夾并獲取它里面的所有內(nèi)容詳細(xì)代碼,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • java中封裝JDBC工具類的實例分析

    java中封裝JDBC工具類的實例分析

    在本篇內(nèi)容里小編給各位分享了一篇關(guān)于java中封裝JDBC工具類的實例分析,對此有興趣的朋友們可以學(xué)習(xí)下。
    2021-03-03
  • java生成申請單序列號的實現(xiàn)方法

    java生成申請單序列號的實現(xiàn)方法

    申請單序列號一般要求根據(jù)一定的規(guī)則生成后幾位連續(xù)的字符串,下面是我項目中使用的生成序列號的代碼,其中用到了鎖機制,有需要的朋友可以參考一下
    2014-01-01

最新評論