Java垃圾回收之新生代垃圾收集器
生活随笔
收集整理的這篇文章主要介紹了
Java垃圾回收之新生代垃圾收集器
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
分代收集算法
Stop-the-World(停止一切)
- JVM由于要執(zhí)行GC而停止了應(yīng)用程序的執(zhí)行
- 任何一種GC算法中都會發(fā)生
- 多數(shù)GC優(yōu)化通過減少Stop-the-world發(fā)生時間來提高程序性能
Safepoint (安全點)
- 分析過程中對象引用關(guān)系不會發(fā)生變化的點
- 產(chǎn)生Safepoint的地方: 方法調(diào)用; 循環(huán)跳轉(zhuǎn); 異常跳轉(zhuǎn)等
- 安全點數(shù)量得適中(太少會讓gc等待太長時間,太多會增加程序運行負荷)
常見垃圾收集器
JVM的運行模式
- Server:啟動較慢,?
- Client: 啟動較快
啟動進入穩(wěn)定期長期運行之后,Server的運行速度比Client快。因為Server采用重量級的虛擬機,對程序采用了更多的優(yōu)化。而Client采用輕量級的虛擬機
如何查看虛擬機是Server還是Client
使用:java -version
?
常見的垃圾收集器和垃圾收集器之間的關(guān)系
?
年輕代常見的垃圾收集器
Serial收集器(-XX:+UseSerialGC,復(fù)制算法)
- 單線程收集,進行垃圾收集時,必須暫停所有工作線程
- 簡單高效,Client模式默認的年輕代收集器
?
?
ParNew收集器(-XX:+UseParNewGC, 復(fù)制算法)
- 多線程收集,其余的行為、特點和Serial收集器一樣
- 單核執(zhí)行效率不如Serial, 在多核下執(zhí)行才有優(yōu)勢
?
Parallel Scavenge收集器(-XX:+UseParallelGC, 復(fù)制算法)
- 比起關(guān)注用戶線程停頓時間,更關(guān)注系統(tǒng)的吞吐量
? ? ? ?吞吐量=運行用戶代碼時間/(運行用戶代碼時間+垃圾收集時間)?
- 在多核下執(zhí)行才有優(yōu)勢,Server模式下默認的年輕代收集器
設(shè)置:-XX:+UseAdapiveSizePolicy 會把內(nèi)存的調(diào)優(yōu)任務(wù)交由虛擬機去完成
?
總結(jié)
以上是生活随笔為你收集整理的Java垃圾回收之新生代垃圾收集器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2022-2028年中国数码摄像机市场投
- 下一篇: Java垃圾回收之老年代垃圾收集器