HotSpot 垃圾收集器

文章目錄

  • 前言
    • HotSpot 垃圾收集器
      • 1. 查看jdk默認垃圾收集器命令
      • 2. 查看當前服務使用的是哪個垃圾收集器:
      • 3. 常用的垃圾收集器
        • 3.1. 并行垃圾收集器(Parallel Garbage Collector)
        • 3.2. CMS 垃圾收集器(Concurrent Mark-Sweep Garbage Collector)
        • 3.3. G1 垃圾收集器(Garbage-First Garbage Collector)

前言

??如果您覺得有用的話,記得給博主點個贊,評論,收藏一鍵三連啊,寫作不易啊^ _ ^。
??而且聽說點贊的人每天的運氣都不會太差,實在白嫖的話,那歡迎常來啊!!!


HotSpot 垃圾收集器

HotSpot 虛擬機提供了多種垃圾收集器,每種收集器都有各自的特點,雖然我們要對各個收集器進行比較,但并非為了挑選出一個最好的收集器。我們選擇的只是對具體應用最合適的收集器。

1. 查看jdk默認垃圾收集器命令

java -XX:+PrintCommandLineFlags -version

在這里插入圖片描述
Java 虛擬機通常會根據運行環境和硬件自動選擇合適的默認垃圾收集器,但也可以通過配置參數來指定使用特定的垃圾收集器.

2. 查看當前服務使用的是哪個垃圾收集器:

jps: 列出當前正在運行的 Java 進程和它們的 PID

jcmd: jcmd 命令可以用來執行各種診斷命令,包括查看 JVM 參數和運行時信息。你可以使用 jcmd 來查看正在運行的 Java 進程使用的垃圾收集器類型。

jcmd <pid> VM.flags

在這里插入圖片描述

可以看到使用的是G1垃圾收集器。

3. 常用的垃圾收集器

3.1. 并行垃圾收集器(Parallel Garbage Collector)

優點:

  • 通過多線程同時進行垃圾收集,提高了垃圾收集的吞吐量,適合處理需要高吞吐量的應用場景。
  • 在多核處理器上表現優異,能夠充分利用多核處理器的優勢。
  • 適合用于后臺運行的任務,不會對應用的響應時間造成顯著影響。

缺點:

  • 由于并行進行垃圾收集,會消耗更多的 CPU 資源,可能導致在一些性能敏感的應用場景中,對響應時間造成不利影響。
  • 不夠靈活,無法很好地適應大內存和低延遲要求的場景。
3.2. CMS 垃圾收集器(Concurrent Mark-Sweep Garbage Collector)

優點:

  • 通過與應用線程并發執行標記和清除過程,減少了垃圾收集時的停頓時間,適合對響應時間要求較高的應用。
  • 對于大部分應用,能夠提供比并行垃圾收集器更低的停頓時間。

缺點:

  • 在進行老年代的清理時,可能會出現“并發模式失敗”(Concurrent Mode Failure),需要使用 Serial Old 垃圾收集器進行退化處理,可能導致較長的停頓時間。
  • 由于并發執行會占用一定的 CPU 資源,對應用的總吞吐量有一定的影響。
3.3. G1 垃圾收集器(Garbage-First Garbage Collector)

優點:

  • 目標是在有限的時間內實現更加可預測的停頓時間,能夠在大堆內存下提供更為穩定的性能。
  • 通過劃分堆空間為多個區域(Region),可以根據應用的特征動態調整垃圾收集的策略,有效控制停頓時間。

缺點:

  • 由于復雜的區域管理和垃圾收集策略,可能導致一些性能開銷,尤其是在小堆或者低延遲要求的場景中。
  • 初始標記和最終標記階段仍然需要暫停應用線程,雖然停頓時間通常短暫,但對于某些特別要求低延遲的應用仍可能不夠理想。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/36645.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/36645.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/36645.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

情感分析方法與實踐

第1關&#xff1a;情感分析的基本方法 情感分析簡介 情感分析&#xff0c;又稱意見挖掘、傾向性分析等。簡單而言&#xff0c;是對帶有情感色彩的主觀性文本進行分析、處理、歸納和推理的過程。在日常生活中&#xff0c;情感分析的應用非常普遍&#xff0c;下面列舉幾種常見的…

Gradle學習-3 Gradle插件

1、Gredle插件是什么 Gradle插件是用于擴展和增強Gradle構建系統的功能模塊通過插件&#xff0c;Gradle可以執行各種構建任務&#xff0c;如編譯代碼、打包應用、運行測試等 Gradle插件主要分為&#xff1a;二進制插件、腳本插件 二進制插件二進制插件是預編譯的、可以復用的…

web學習筆記(七十二)

目錄 1.vue2通過$parent實現組件傳值——父傳子 2.vue2 通過$children實現組件傳值——子傳父 3. provide和inject傳值&#xff08;依賴注入&#xff09; 4.vue2如何操作dom 5.vue2如何拿到最新的dom 6.filters過濾器 7.vue2的生命周期 8.vuex的用法 1.vue2通過$parent…

Oracle分析表和索引(analyze)

分析表 analyze table tablename compute statistics; 分析索引 analyze index indexname compute statistics; 該語句生成的統計信息會更新user_tables這個視圖的統計信息,分析的結果被Oracle用于基于成本的優化生成更好的查詢計劃 對于使用CBO(Cost-Base Optimization)很有好…

大數據開發需要哪些職場知識

職場是個人情世故的江湖&#xff0c;除了專業技能&#xff0c;成功的大數據開發人員還需要掌握多種職場知識。以下是一些重要的職場知識和技能&#xff0c;結合實際例子詳細說明。 目錄 理論知識與工程實踐理論知識工程實踐例子 項目經驗總結項目管理總結和反思例子 做事方式方…

一招教你搞定Windows系統指定IP不變[固定IP地址方法]

1.打開控制面板&#xff0c;找到“網絡和Internet” 點擊進入&#xff1a; 2.點擊打開“網絡和共享中心”后&#xff0c;選擇“更改適配器選項”。 3.點擊 “查看此連接的狀態”&#xff0c; 接著點擊“詳細信息” 查看信息。記錄當前的IP地址是 10.88.x.xx&#xff0c;后面我們…

Linux驅動開發筆記(九)IIC子系統及其驅動

文章目錄 前言一、IIC驅動框架二、總線驅動2.1 iic總線的運行機制2.2 重要數據結構2.2.1 i2c_driver結構體2.2.2 i2c總線結構體 2.3 匹配規則 三、設備樹的修改四、設備驅動的編寫4.1 相關API函數4.1.1 i2c_add_adapter( )4.1.2 i2c_register_driver( )4.1.3 i2c_transfer( )4.…

Spring+SpringMVC+MyBatis整合

目錄 1.SSM介紹1.1 什么是SSM&#xff1f;1.2 SSM框架1.2.1 Spring1.2.2 SpringMVC1.2.3 MyBatis 2.SSM框架整合2.1 建庫建表2.2 創建工程2.3 pom.xml2.4 log4j.properties2.5 db.properties2.6 applicationContext-dao.xml2.7.applicationContext-tx.xml2.8 applicationContex…

Redis-在springboot環境下執行lua腳本

文章目錄 1、什么lua2、創建SpringBoot工程3、引入相關依賴4、創建LUA腳本5、創建配置類6、創建啟動類7、創建測試類 1、什么lua “Lua”的英文全稱是“Lightweight Userdata Abstraction Layer”&#xff0c;意思是“輕量級用戶數據抽象層”。 2、創建SpringBoot工程 3、引入相…

新能源汽車CAN總線故障定位與干擾排除的幾個方法

CAN總線是目前最受歡迎的現場總線之一,在新能源車中有廣泛應用。新能源車的CAN總線故障和隱患將影響駕駛體驗甚至行車安全,如何進行CAN總線故障定位及干擾排除呢? 目前,國內機動車保有量已經突破三億大關。由于大量的燃油車帶來嚴峻的環境問題,因此全面禁售燃油車的日程在…

汽車租賃系統

摘 要 隨著汽車租賃市場的快速發展&#xff0c;為了提高汽車租賃服務的效率和用戶體驗&#xff0c;本論文設計與實現了一款基于Java的汽車租賃系統。 該系統采用B/S架構&#xff0c;利用JavaWeb技術和MySQL數據庫實現了車輛信息管理、在線車輛租賃、門店出車模塊、租賃訂單信息…

1. Tensorrt-llm 基礎

1.Tensorrt-llm安裝 os: ubuntu 22.04 1.1搭建docker 環境 切換到 root 用戶 sodu passwd root 更新apt sudo apt-get update --fix-missing 更新docker sudo apt-get upgrade docker-ce 安裝nvidia 容器運行時&#xff0c;避免如下錯誤 Error response from daemon…

Android Kotlin 中的閉包函數

閉包函數是現代編程語言中一個重要的概念&#xff0c;Kotlin 作為一種現代的 JVM 語言&#xff0c;自然也支持閉包函數。本文將詳細介紹閉包函數的概念、在Kotlin 中的使用方法&#xff0c;以及一些常見的應用場景。 什么是閉包函數&#xff1f; 閉包函數&#xff0c;也稱為閉…

每天一個項目管理概念之WBS

項目管理中的工作分解結構&#xff08;Work Breakdown Structure&#xff0c;簡稱WBS&#xff09;是規劃和管理項目的核心工具之一&#xff0c;它通過將復雜的項目任務細分為更小、更易管理的部分來提高項目執行的效率與效果。WBS不僅有助于明確項目范圍&#xff0c;還為時間管…

[RPI] istoreos安裝esphome

esphome可以提供了一個集成的編譯環境,同時他又可以通過無線方式更新firmware,這無疑方便了我們的開發工作。 istoreos商店沒有提供esphome,所以我們需要自己用‘類似’命令行的方式來安裝, 1. 拉取esphome鏡像 依次點擊左側邊欄Docker -> 鏡像,輸入esphome/esphome…

【LeetCode面試經典150題】117. 填充每個節點的下一個右側節點指針 II

一、題目 117. 填充每個節點的下一個右側節點指針 II - 力扣&#xff08;LeetCode&#xff09; 給定一個二叉樹&#xff1a; struct Node {int val;Node *left;Node *right;Node *next; } 填充它的每個 next 指針&#xff0c;讓這個指針指向其下一個右側節點。如果找不到下一個…

React@16.x(42)路由v5.x(7)常見應用場景(4)- 路由切換動畫

目錄 1&#xff0c;實現路由切換基礎樣式 2&#xff0c;使用 CSSTransition 添加動畫1&#xff0c;自定義動畫組件 *TransitionRoute.jsx*2&#xff0c;*App.jsx*3&#xff0c;樣式改動 3&#xff0c;注意點 通過一個例子來說明如何實現。 1&#xff0c;實現路由切換 基礎樣式…

[DDD] 領域驅動設計簡介

領域驅動設計 Domain Driven Design 1 DDD簡介 領域驅動設計&#xff08;Domain-Driven Design&#xff0c;簡稱DDD&#xff09;是一種軟件開發方法論&#xff0c;它強調軟件設計應緊密圍繞業務領域模型進行。DDD的核心思想是將實現與業務邏輯分離&#xff0c;通過深入理解和…

億發進銷存管理系統+:多終端無縫協同,實現經營銷售場景全覆蓋

億發軟件憑借產品、市場、業務的深入理解&#xff0c;在進銷存基礎上進行了延伸&#xff0c;推出多終端、一體化的“進銷存管理系統”多元產品矩陣。對企業經營中進貨、出貨、銷售、付款等進行全程跟蹤管理。有效輔助企業解決業務管理、銷售管理、庫存管理、財務管理等一系列問…

Java路徑操縱漏洞示例與解決賞析之一

示例代碼 public static List<File> findClassesInPackage(String codePath,String packageName, boolean recursive) {List<File> classFiles = new ArrayList<>();String packagePath = packageName.replace(., /);File directory = new File(codePath + &…