自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Java 8 最快的垃圾搜集器是什么?

開發(fā) 后端
OpenJDK 8 有多種 GC(Garbage Collector)算法,如 Parallel GC、CMS 和 G1。哪一個才是最快的呢?如果在 Java 9 中將 Java 8 默認的 GC 從 Parallel GC 改為 G1 (目前只是建議)將會怎么樣呢?讓我們對此進行基準測試。

OpenJDK 8 有多種 GC(Garbage Collector)算法,如 Parallel GC、CMS 和 G1。哪一個才是最快的呢?如果在 Java 9 中將 Java 8 默認的 GC 從 Parallel GC 改為 G1 (目前只是建議)將會怎么樣呢?讓我們對此進行基準測試。

基準測試方法

運行相同的代碼六次,每次使用不同的VM參數(shù)(-XX:+UseSerialGC, -XX:+UseParallelGC, -XX:+UseConcMarkSweepGC, -XX:ParallelCMSThreads=2, -XX:ParallelCMSThreads=4, -XX:+UseG1GC)。

每次運行大概花費55分鐘。

其它VM參數(shù):-Xmx2048M -server

OpenJDK版本:1.8.0_51(當前***的版本)

軟件:Linux version 4.0.4-301.fc22.x86_64

硬件:Intel? Core? i7-4790 CPU @ 3.60GHz

每次運行13個?OptaPlanner?規(guī)劃問題方案。每次運行時間為5分鐘。前30秒用于JVM預(yù)熱,不計算在內(nèi)。

解決規(guī)劃問題不涉及 IO (除了啟動時需要幾毫秒來加載輸入信息)。單個 CPU 使用完全飽和。通常會創(chuàng)建許多存活時間很短的對象,GC 之后就會回收這些對象。

衡量標準可以是計算每毫秒的得分,越高越好。計算一個擬議規(guī)劃解決方案是一個不可小覷的問題:涉及到大量的計算,包括每個實體與其他所有實體的沖突檢測。

為了能在本地重復(fù)運行這些基準測試,可以從源碼進行構(gòu)建,然后運行主類 GeneralOptaPlannerBenchmarkApp。

基準測試結(jié)果

執(zhí)行結(jié)果

為了方便查看,我已經(jīng)對每種 GC 與 Java 8 默認 GC(Parallel GC)進行了比較。

Java 8最快的垃圾搜集器是什么?

結(jié)果非常清楚:默認(Parallel GC)是最快的。

原始基準測試數(shù)據(jù)

Java 8最快的垃圾搜集器是什么?

相對基準測試數(shù)據(jù)
Java 8最快的垃圾搜集器是什么?

Java 9 默認應(yīng)該為 G1 嗎?

有一種提議是在 OpenJDK9 的服務(wù)器端使用 G1 作為默認 GC。我***反應(yīng)就是拒絕該提議:

G1 的平均值要慢17.60%

G1 在每個數(shù)據(jù)集用例下都比較慢。

在***數(shù)據(jù)集(Machine Reassignment B10)下,表現(xiàn)比其它數(shù)據(jù)集都要差,G1 慢了34.07%。

如果在開發(fā)機和服務(wù)器之間采用不同的默認 GC,則開發(fā)者基準測試的可信度就會下降。

另一方面,存在幾個需要注意的細節(jié):

G1 關(guān)注是 GC 暫停的問題,而不是吞吐量。對于這些用例(計算量比較大),GC 暫停時長基本沒影響。

這是一個(基本是)單線程的基準測試。并行解決多個問題或采用多線程解決的基準測試,結(jié)果可能不同。

G1 推薦的堆內(nèi)存至少是 6GB。而這次基準測試的堆內(nèi)存是 2GB,即使在***數(shù)據(jù)集(Machine Reassignment B10)也只需要這么多內(nèi)存。

海量計算只是 OpenJDK 的諸多功能中的一個:這是在社區(qū)廣泛爭論的一個問題。如果有其他方面(如網(wǎng)站服務(wù))的證明,可能值得改變默認GC。但是,請首先向我展示你實際項目的基準測試。

結(jié)論

在 Java 8 中,對 OptaPlanner 用例來說,默認 GC(Parallel GC)通常情況是***的選擇。

責任編輯:王雪燕 來源: ImportNew
相關(guān)推薦

2019-08-12 11:14:00

JVM垃圾對象

2012-03-16 21:25:14

Windows Pho

2020-06-01 20:08:47

垃圾G1回收器

2021-08-10 07:00:02

Java8 G1垃圾回收器

2012-04-18 09:29:49

微軟Windows 8RT

2023-12-07 12:21:04

GCJVM垃圾

2011-07-21 14:54:26

java垃圾收集器

2022-03-21 11:33:11

JVM垃圾回收器垃圾回收算法

2022-07-25 10:15:29

垃圾收集器Java虛擬機

2013-04-07 10:12:16

超級計算機走鵑IBM

2024-04-02 08:02:11

Dockerk8s容器

2009-09-01 10:38:13

NFS服務(wù)器

2009-09-01 11:18:26

郵件服務(wù)器

2024-09-26 12:33:29

JSAPI循環(huán)

2009-09-01 09:50:22

Samba服務(wù)器

2009-09-16 16:32:30

WUSU服務(wù)器

2025-02-21 10:46:16

JSForEachAPI

2022-01-20 10:34:49

JVM垃圾回收算法

2017-08-04 10:53:30

回收算法JVM垃圾回收器

2023-09-20 11:36:47

Java 8Java 11
點贊
收藏

51CTO技術(shù)棧公眾號