Stream流式計算 什麼是Stream流式計算 大數據:存儲+計算 集合、MySql這些的本質都是存儲東西的; 計算都應該交給流來操作! 一個案例說明:函數式介面、lambda表達式、鏈式編程、Stream流式計算 package org.example.stream; import java.u ...
JDK21預設GC是G1.
JDK21除了G1外,還可以使用ZGC(Java11預覽、Java15正式版),Java21在ZGC基礎上繼續推出了分代ZGC,目前還是試行階段。
開啟ZGC:
java -XX:+UseZGC -jar myapp.jar
開啟ZGC,並試用分代ZGC
java -XX:+UseZGC -XX:+ZGenerational -jar myapp.jar
以下的對一個啟用tomcat虛擬線程的spring boot 項目分別以預設GC/ZGC/分代ZGC進行高併發測試,測試過程中,對該app占用操作系統的物理記憶體進行統計,然後形成統計折線圖:
三種GC下的壓測對併發性能幾乎無差別的情況下,三者的記憶體表現大為不同,特別是G1與兩個ZGC的差異尤為明顯。
雖然本次比較測試的場景比較單一,但大致能看出ZGC的垃圾回收效率比G1高。
ZGC在垃圾回收的優勢主要是:
- 低卡頓: 最大暫停時間不超過10 ms
- 高吞吐: 短時間可以回收大量記憶體
- 大堆記憶體支持:對於大規模的應用程式,ZGC 的能力非常有價值,可以降低碎片化的影響。
- 分區化處理:對不同大小的記憶體進行分區化處理,可以加快小記憶體回收
代碼已上傳gitee