JVM--怎麼選擇一款合適的垃圾收集器

JVM–怎麼選擇一款合適的垃圾收集器

echo編輯整理。歡迎添加echo微信(微信號:t2421499075)交流學習。該文章不支持轉載,主要內容來自讀書筆記和網絡博客,以及視頻學習整理。

參考資料列表:

jdk不同版本的垃圾收集器:https://blog.csdn.net/weixin_34166847/article/details/94133616

鼓泡學院資料集

《深入理解Java虛擬機:JVM高級特性與最佳實踐(第3版)》 --周志明

衡量垃圾收集器的三項最重要的指標是:內存佔用(Footprint)、吞吐量(Throughput)和延遲(Latency),但是我們僅僅知道這些,再去了解一下諸多的垃圾收集器,並不能有效合理的選擇一款適合我們的垃圾收集器。在網上看到很多的文章描述,都是請根據每一個垃圾收集器的特性和對應的場景來使用。這一句話其實一點也沒錯,但是對於一個接觸垃圾收集器不多的人來說,可能就會造成一臉懵。本文主要整理選擇垃圾收集器的方法

越先進的垃圾收集器越好嗎?

答案是否定的。在我們JDK不斷更新的過程過,我們發現很多的垃圾收集器都是根據JDK的版本來調整的,比如G1就是JDK11的環境發佈的,ZGC應該是JDK13的環境發佈的。很顯然,目前市場上很多公司還在使用JDK1.7、JDK1.8,使用JDK11的都很少,所以有可能牛頭不對馬嘴

垃圾收集器選擇場景分析

  • 應用程序需要儘快計算出結果,目標是能儘快計算出結果,那吞吐量就是最主要的點【吞吐量】。
  • 如果是SLA應用,那停頓時間直接影響服務質量,嚴重的甚至會導致事務超時,關注點就是延遲【延遲】。
  • 如果是客戶端或者嵌入式應用,那垃圾收集器的內存佔用則是不可忽視的【內存佔用】。

垃圾收集器受哪些硬件條件影響

  • 系統架構是x86-32/64、SPARC還是ARM/Aarch64
  • 處理器的數量有多少
  • 分配的內存大小
  • 操作系統是Linux、Solaris、Windows

JDK版本對垃圾收集器的影響

  • 【Serial收集器】JDK1.3.1前是HotSpot新生代收集的唯一選擇
  • 【ParNew】【Parallel Scavenge】JDK1.4的垃圾收集器
  • 【CMS(Concurrent Mark Sweep)】【Serial Old】JDK1.5的垃圾收集器版本
  • 【Parallel Old】JDK1.6的垃圾收集器版本
  • 【G1】JDK11的垃圾收集器版本
  • 【ZGC】JDK13的垃圾收集器版本

JDK供應商對垃圾收集器的影響

Shenandoah屬於OpenJDK12的正式特性之一,Oracle並不支持

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章