1. 程式人生 > >並行收集器

並行收集器

大堆 程序 內存 ava scale 長時間 -xms bsp 最大

默認情況下服務器上選擇並行收集器。 1、並行收集器(這裏也稱為吞吐量收集器)是類似於串行收集器的分代收集器; 主要區別在於多個線程用於加速垃圾收集。使用命令行選項啟用並行收集器-XX:+UseParallelGC。 2、可以使用命令行選項控制垃圾收集器線程的數量 -XX:ParallelGCThreads=12 3、對於並行收集器,Java SE提供了垃圾收集調整參數,滿足的順序為從高到低:最大暫停時間>吞吐量>最小堆空間 最大暫停時間目標: -XX:MaxGCPauseMillis=500 暫停時間是垃圾收集器停止應用程序並恢復不再使用的空間的持續時間。 最大暫停時間是限制暫停的最長時間。 垃圾收集器將調整Java堆大小以及與垃圾收集相關的其他參數,以嘗試使垃圾收集暫停時間短於MaxGCPauseMilli配置的毫秒。這些調整可能會導致垃圾收集器更頻繁地發生,從而降低了應用程序的整體吞吐量
應用程序吞吐量目標: -XX:GCTimeRatio=5 吞吐量目標是根據垃圾回收所花費的時間和垃圾收集之外所花費的時間(稱為應用程序時間)來衡量的。例如:GC時間為1,非GC時間為19,這吞吐量=1/(1+19)=5%,設置GCTimeRatio=5。 堆占用空間: -Xmx 4、堆調整 調整堆是按照每次20%增長,按照每次5%收縮 可以通過選擇進行配置: young區增長量:-XX:YoungGenerationSizeIncrement=<Y> old區增長量:-XX:TenuredGenerationSizeIncrement=<T> 收縮量:X/D,-XX:AdaptiveSizeDecrementScaleFactor=<D> 5、服務器JVM默認初始和最大堆大小 32位JVM上,如果有4 GB或更多物理內存,則默認最大堆大小最多可達1 GB 64位JVM上,如果存在128 GB或更多物理內存,則默認最大堆大小最多可為32 GB 6、指定初始和最大堆大小 使用-Xms設置初始化大小、-Xmx設置最大堆 如果明確知道應用程序需要的堆大小,可以-Xms與-Xmx設置相同值 如果不知道,可以設置-Xms初始化堆大小,然後JVM自己控制堆大小以達到堆使用和性能之前的平衡。 GC時間為young區GC+old區GC時間之和。 如果吞吐量和最大暫停時間已經滿了,那麽垃圾回收器將減少堆得大小直到不能滿足兩個目標中的一個為止。 如果不確定應用程序需要堆的最大值,就不用設置最大堆值,從而滿足應用的最大吞吐量目標。 JVM將控制堆的大小以滿足吞吐量目標。 當垃圾回收期試圖滿足吞吐量和最大暫停時間兩個目標時,堆的大小可能頻繁變動。

並行收集器