面試連環炮系列(二十六):什麼情況下JVM頻繁發生full GC

来源:https://www.cnblogs.com/xiaoyangjia/archive/2022/03/25/16056011.html
-Advertisement-
Play Games

什麼情況下JVM頻繁發生full GC; 在實際項目什麼代碼導致full GC;線上怎麼排查是哪個程式導致的ful GC ...


1. 什麼情況下JVM頻繁發生full GC?
full gc觸發條件是老年代空間不足,具體原因有四個:

  • 系統併發高、執行耗時長或者創建對象過多,導致 young gc頻繁,且gc後存活對象太多,但是survivor 區存放不下(太小或動態年齡判斷) 導致對象快速進入老年代,造成full gc。
  • 過多的大對象載入到記憶體,新生代空間不足會轉入老年代,導致full gc。
  • 發生記憶體溢出,老年代駐留了大量釋放不掉的對象,只要有一點點對象進入老年代就達到 full gc的水位。
  • 頻繁的手動調用System.gc()。

2. 在實際項目什麼代碼導致full GC?

  • 創建對象過大或過多,比如處理圖片、緩存數據。
  • IO資源沒有釋放,比如網路請求沒有關閉。

3. 線上怎麼排查是哪個程式導致的full GC?

  1. top命令查看CPU的占用情況
    top命令獲得應用程式的進程ID,Java程式的“COMMOND”列是"java"
  2. jstat命令查看GC的統計
jstat -gc 3038 #3038是進程號
  1. jmap命令生成堆棧文件
jmap -F -dump:format=b,file=heapDump 3038 #3038是進程號
  1. 下載heapDump文件,通過http://gceasy.io/網站或者VisualVM分析堆棧文件,觀察Classes最多的一列是哪個代碼導致的。
參考(摘抄的文字版權屬於原作者):

https://www.cnblogs.com/mushishi/p/14553105.html
https://www.cnblogs.com/wujf/p/10972234.html
https://blog.csdn.net/soaring0121/article/details/83620480

作者:編碼磚家
公眾號:編碼磚家
出處:https://www.cnblogs.com/xiaoyangjia/
本文版權歸作者所有,任何人或團體、機構全部轉載或者部分轉載、摘錄,請在文章明顯位置註明作者和原文鏈接。
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一,server 端的存儲模式為:Server 端 存 儲 模 式 (store-mode) 支 持 三 種 : file: ( 默 認 ) 單 機 模 式 , 全 局 事 務 會 話 信 息 內 存 中 讀 寫 並 持 久 化 本 地 文 件 root.data , 性 能 較 高 ( 默 認 ) ...
  • 一:遍歷 A:遍歷 方式1: public static void printArray(int[] arr) { for(int x=0; x<arr.length; x++) { System.out.println(arr[x]); } } 方式2: public static void pr ...
  • 文末源碼,閱讀大約2.8分鐘 傻瓜式教程 - 體驗滑塊,提供練習場景及源碼。 @ 環境安裝 安裝python需要的依賴包 cv2 安裝可以參考這裡:https://javapub.blog.csdn.net/article/details/123656345 安裝webdriver → chrome ...
  • HashSet集合存儲自定義對象並遍歷。如果對象的成員變數值相同即為同一個對象 * * 註意了: * 你使用的是HashSet集合,這個集合的底層是哈希表結構。 * 而哈希表結構底層依賴:hashCode()和equals()方法。 * 如果你認為對象的成員變數值相同即為同一個對象的話,你就應該在自 ...
  • 《零基礎學Java》 文本組件 文本組件在實際的項目開發中使用的最為廣泛,尤其是 文本框 與 密碼框 組件。 JTextField文本框組件 文本框(JTextField)是用來 顯示 或 編輯 一個單行文本,在 Swing 中通過 javax.swing.JTextField類 對象創建(該類繼承 ...
  • 圖論 圖論是數學的一個分支。它以圖為研究對象。圖論中的圖是由若幹給定的點及連接兩點的線所構成的圖形,這種圖形通常用來描述某些事物之間的某種特定關係,用點代表事物,用連接兩點的線表示相應兩個事物間具有這種關係。 樹 定義 樹是遞歸定義的。 一棵樹是由n(n>0)個元素組成的有限集合,其中每個元素稱為結 ...
  • 1.概述 是什麼:是對方法、類、參數、包、域以及變數等進行代碼功能的增強或者修改程式的行為等操作。 應用 跟蹤代碼依賴性,實現替代配置文件功能在反射中使用Annotation,欄位格式化(如:數據欄位脫敏、日期格式)在編譯時進行格式檢查生成幫助文檔 2.註解相關知識 元註解指的是所有註解都基於它們而 ...
  • 1.反射概述 Java程式在運行時操作類中的屬性和方法的機制,稱為反射機制。 一個關鍵點:運行時 一般我們在開發程式時,都知道自己具體用了什麼類,直接創建使用即可。但當你寫一些通用的功能時沒辦法在編寫時知道具體的類型,並且程式跑起來還會有多種類型的可能,則需要在運行時動態的去調用某個類的屬性和方法, ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...