java8默认垃圾收集器_Java 8中最快的垃圾收集器是什么?
java8默認(rèn)垃圾收集器
OpenJDK 8具有幾種垃圾收集器算法,例如Parallel GC , CMS和G1 。 哪一個(gè)最快? 如果默認(rèn)GC從Java 8中的并行GC更改為Java 9中的G1(當(dāng)前建議),將會(huì)發(fā)生什么? 讓我們對(duì)其進(jìn)行基準(zhǔn)測(cè)試。
基準(zhǔn)方法
- 使用不同的VM參數(shù)運(yùn)行相同的代碼6次( -XX:+UseSerialGC , -XX:+UseParallelGC , -XX:+UseConcMarkSweepGC , -XX:ParallelCMSThreads=2 , -XX:ParallelCMSThreads=4 , -XX:+UseG1GC ) 。
- 每次運(yùn)行大約需要55分鐘。
- 其他VM參數(shù): -Xmx2048M -server
OpenJDK版本: 1.8.0_51 (當(dāng)前最新版本)
軟體: Linux version 4.0.4-301.fc22.x86_64 硬件: Intel? Core? i7-4790 CPU @ 3.60GHz - 每次運(yùn)行都能使用OptaPlanner解決13個(gè)計(jì)劃問題。 每個(gè)計(jì)劃問題要運(yùn)行5分鐘。 它以30秒的JVM預(yù)熱開始,該預(yù)熱將被丟棄。
- 解決計(jì)劃問題不涉及任何IO (啟動(dòng)期間要加載輸入的幾毫秒除外)。 一個(gè)CPU完全飽和。 它會(huì)不斷創(chuàng)建許多短命的對(duì)象,然后GC會(huì)收集它們。
- 基準(zhǔn)衡量每毫秒可以計(jì)算的分?jǐn)?shù)數(shù)量。 越高越好。 為提議的規(guī)劃解決方案計(jì)算分?jǐn)?shù)并非易事:涉及許多計(jì)算,包括檢查每個(gè)實(shí)體與每個(gè)其他實(shí)體之間的沖突。
要在本地重現(xiàn)這些基準(zhǔn), 請(qǐng)從源代碼構(gòu)建optaplanner并運(yùn)行主類GeneralOptaPlannerBenchmarkApp 。
基準(zhǔn)結(jié)果
執(zhí)行摘要
為了方便起見,我將每種垃圾收集器類型與Java 8(并行GC)中的默認(rèn)類型進(jìn)行了比較。
結(jié)果很明顯: 該默認(rèn)值(并行GC)是最快的。
原始基準(zhǔn)數(shù)字
相對(duì)基準(zhǔn)數(shù)字
Java 9是否應(yīng)該默認(rèn)為G1?
有建議使G1成為服務(wù)器的OpenJDK9中的默認(rèn)垃圾收集器 。 我的第一React是拒絕這個(gè)提議 :
- G1平均為17.60% 。
- 對(duì)于每個(gè)數(shù)據(jù)集,在每個(gè)用例上,G1始終較慢。
- 在最大數(shù)據(jù)集(Machine Reassignment B10)上,它使任何其他數(shù)據(jù)集的大小都34.07% ,, G1為34.07%較慢。
- 如果開發(fā)人員機(jī)器和服務(wù)器之間的默認(rèn)GC不同,則開發(fā)人員基準(zhǔn)測(cè)試的可信度將降低。
另一方面,需要注意一些細(xì)微差別:
- G1專注于限制GC暫停,而不是吞吐量。 對(duì)于這些用例(計(jì)算量很大),GC暫停長(zhǎng)度基本上無(wú)關(guān)緊要。
- 這是(幾乎)單線程基準(zhǔn)。 在并行或多線程求解中使用多個(gè)求解器進(jìn)行進(jìn)一步的基準(zhǔn)測(cè)試可能會(huì)影響結(jié)果。
- 建議使用G1的堆大小至少為6 GB 。 該基準(zhǔn)測(cè)試僅使用了2 GB的堆大小,甚至只有最大的數(shù)據(jù)集(Machine Reassignment B10)才需要該大小。
繁瑣的計(jì)算只是OpenJDK所使用的眾多功能之一:在整個(gè)社區(qū)辯論中,它只是利益相關(guān)者中的一員。 如果其他利益相關(guān)者(例如Web服務(wù))證明相反,則值得更改默認(rèn)GC。 但是,請(qǐng)先向我展示真實(shí)項(xiàng)目的基準(zhǔn) !
結(jié)論
在Java 8中,默認(rèn)的垃圾收集器(Parallel GC)通常是OptaPlanner用例的最佳選擇。
翻譯自: https://www.javacodegeeks.com/2015/08/what-is-the-fastest-garbage-collector-in-java-8.html
java8默認(rèn)垃圾收集器
總結(jié)
以上是生活随笔為你收集整理的java8默认垃圾收集器_Java 8中最快的垃圾收集器是什么?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 寄售是什么意思 什么是寄售
- 下一篇: jit编译_意外分配– JIT编译抖动