Druid監控sql導致的內存溢出--內存分析工具MemoryAnalyzer(mat)

問題

druid監控sql在網頁端顯示,我的服務插入sql比較大,druid把執行過的sql保存在DruidDataSource類的成員變量JdbcDataSourceStat dataSourceStat;
JdbcDataSourceStat類中的LinkedHashMap<String, JdbcSqlStat> ?sqlStatMap中;?sqlStatMap中的sql越來越多導致老年區的內存越來越多且回收不掉。

解決辦法

關閉druid的監控,該監控會耗盡內存?

spring.datasource.druid.stat-view-servlet.enabled=false?
spring.datasource.druid.web-stat-filter.enabled=false?# 配置監控統計攔截的filters,去掉后監控界面sql無法統計,'wall'用于防火墻
# ? ? ? ?filters: stat,wall,slf4j? ? 原來的配置filters: slf4j? ? ?#現在的配置,除去stat,wall

發現問題

2025-04-27T02:04:58.124+0800: 118542.443: [Full GC (Ergonomics) [PSYoungGen: 389120K->389119K(427520K)] [ParOldGen: 1747632K->1747631K(1747968K)] 2136752K->2136751K(2175488K), [Metaspace: 91767K->91767K(1136640K)], 0.4695953 secs] [Times: user=1.64 sys=0.00, real=0.47 secs] 
2025-04-27T02:04:58.593+0800: 118542.914: [Full GC (Ergonomics) [PSYoungGen: 389120K->389119K(427520K)] [ParOldGen: 1747631K->1747631K(1747968K)] 2136751K->2136751K(2175488K), [Metaspace: 91767K->91767K(1136640K)], 0.4865868 secs] [Times: user=1.48 sys=0.02, real=0.49 secs] 
2025-04-27T02:04:59.082+0800: 118543.402: [Full GC (Ergonomics) [PSYoungGen: 389119K->389119K(427520K)] [ParOldGen: 1747635K->1747629K(1747968K)] 2136755K->2136749K(2175488K), [Metaspace: 91767K->91767K(1136640K)], 0.4742007 secs] [Times: user=1.52 sys=0.00, real=0.47 secs] 
2025-04-27T02:04:59.557+0800: 118543.877: [Full GC (Ergonomics) [PSYoungGen: 389120K->389119K(427520K)] [ParOldGen: 1747629K->1747629K(1747968K)] 2136749K->2136749K(2175488K), [Metaspace: 91767K->91767K(1136640K)], 0.4986030 secs] [Times: user=1.55 sys=0.02, real=0.50 secs] 
2025-04-27T02:05:00.057+0800: 118544.377: [Full GC (Ergonomics) [PSYoungGen: 389120K->389119K(427520K)] [ParOldGen: 1747629K->1747629K(1747968K)] 2136749K->2136749K(2175488K), [Metaspace: 91767K->91767K(1136640K)], 0.4815433 secs] [Times: user=1.63 sys=0.00, real=0.48 secs] 
2025-04-27T02:05:00.539+0800: 118544.859: [Full GC (Ergonomics) [PSYoungGen: 389119K->389119K(427520K)] [ParOldGen: 1747629K->1747629K(1747968K)] 2136749K->2136749K(2175488K), [Metaspace: 91767K->91767K(1136640K)], 0.4686810 secs] [Times: user=1.53 sys=0.00, real=0.47 secs] 

這個GC日志顯示Full GC沒有釋放任何堆內存空間,還一直在執行Full GC,導致cpu占用在80%,可能是存在內存泄漏問題導致對象無法被回收。

找出問題根源

1.導出dump文件

方式一:?jmap -dump:format=b,file=D:\work_temp\1\shdhv3.hprof 20920

20920=pid

方式二:運行C:\Program Files\Java\jdk1.8.0_171\bin\jvisualvm.exe

選中運行的jar應用程序--》堆Dump(H) -->在下面生成heapdump文件--》右鍵--》另存為--》選擇路徑

2.下載安裝mat

MemoryAnalyzer工具是Eclipse內存分析器是一種快速、功能豐富的java堆分析器,可以幫助你找到內存泄漏和減少內存消耗,比jdk自帶的工具強大很多。

下載地址:

https://eclipse.dev/mat/

mat需要至少jdk17版本,我的只有jdk1.8,下載jdk17安裝后把jdk-17的文件夾直接拷貝到MemoryAnalyzer-1.16.1.20250109-win32.win32.x86_64\mat路徑下

指定jdk17路徑,修改MemoryAnalyzer.ini文件,在文件內容的最前面添加指定

-vm
D:\常用軟件\MemoryAnalyzer-1.16.1.20250109-win32.win32.x86_64\mat\jdk-17\bin\javaw.exe

3.使用mat分析dump文件

運行MemoryAnalyzer.exe---》file--》open heap dump--》選擇生成的dump文件--》leak suspects report--》finish

打開Overview界面--》Dominator Tree,如下圖:

跳轉到Dominator Tree界面,所有類的占用內存排序顯示出來了,哪些類占用內存一目了然。

展開com.alibaba.druid.pool.DruidDataSource后看到大量的hashMap占用內存,原來是druid監控sql使用的,并不會釋放。

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

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

相關文章

《Python實戰進階》No45:性能分析工具 cProfile 與 line_profiler

Python實戰進階 No45&#xff1a;性能分析工具 cProfile 與 line_profiler 摘要 在AI模型開發中&#xff0c;代碼性能直接影響訓練效率和資源消耗。本節通過cProfile和line_profiler工具&#xff0c;實戰演示如何定位Python代碼中的性能瓶頸&#xff0c;并結合NumPy向量化操作…

計算機操作系統知識集合

主要來自小林coding 硬件結構 cpu位寬 如果用 32 位 CPU 去加和兩個 64 位大小的數字&#xff0c;就需要把這 2 個 64 位的數字分成 2 個低位 32 位數字和 2 個高位 32 位數字來計算&#xff0c;先加個兩個低位的 32 位數字&#xff0c;算出進位&#xff0c;然后加和兩個高位…

電機常用易混淆概念說明(伺服、舵機、多輪)

1. 概述 基礎動力需求 &#xff1a;普通電機&#xff08;如水泵、風扇&#xff09;。 高精度控制 &#xff1a;優先伺服系統或伺服電機&#xff08;如數控機床&#xff09;。 微型化場景 &#xff1a;舵機&#xff08;如遙控模型&#xff09;。 移動底盤 &#xff1a;單舵輪成…

進程與線程:04 內核線程

內核級線程概述 上一講我們學習了用戶級線程&#xff0c;了解了其切換和創建方式。用戶級線程切換核心在于從一個棧變為兩個棧&#xff0c;每個線程有自己的棧和線程控制塊&#xff08;tcb&#xff09;&#xff0c;切換時先切換tcb再切換棧&#xff0c;創建時將切換的pc指針放…

信息系統項目管理師-軟考高級(軟考高項)???????????2025最新(六)

個人筆記整理---僅供參考 第六章項目管理概論 6.1PMBOK的發展 6.2項目基本要素 組織過程資產指的是項目上的&#xff0c;國產數據庫的使用----安保和安全指的是環境因素 6.3項目經理的角色 6.4價值驅動的項目管理知識體系

[藍橋杯 2023 國 Python B] 劃分 Java

import java.util.*;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int[] arr new int[41];int sum 0;for (int i 1; i < 40; i) {arr[i] sc.nextInt();sum arr[i];}sc.close();int target sum / 2; // 最接近的兩…

Redis05-進階-主從

零、文章目錄 Redis05-進階-主從 1、搭建主從架構 &#xff08;1&#xff09;概述 單節點Redis的并發能力是有上限的&#xff0c;要進一步提高Redis的并發能力&#xff0c;就需要搭建主從集群&#xff0c;實現讀寫分離。 &#xff08;2&#xff09;集群概況 我們搭建的主從…

小結:ipsec-ike

IPSec 手動配置與自動配置&#xff08;IKE動態協商&#xff09; 手動配置IPSec 邏輯圖 #mermaid-svg-eNMnNEwnoTjF8fkV {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-eNMnNEwnoTjF8fkV .error-icon{fill:#552222;}…

瀟灑郎: 100% 成功搭建Docker私有鏡像倉庫并管理、刪除鏡像

1、Registry Web管理界面 2、拉取Registry-Web鏡像 創建配置文件 tee /opt/zwx-registry/web-config.yml <<-EOF registry:url: http://172.28.73.90:8010/v2name: registryreadonly: falseauth:enabled: false EOF 拉取docker-registry-web鏡像并綁定Registry倉庫 …

《機器學習中的過擬合與模型復雜性:理解與應對策略》

《機器學習中的過擬合與模型復雜性&#xff1a;理解與應對策略》 摘要 在機器學習中&#xff0c;過擬合是模型在訓練數據上表現良好但在新數據上泛化能力差的現象。本文深入探討了過擬合與模型復雜性之間的關系&#xff0c;分析了復雜模型導致過擬合的原因&#xff0c;并介紹…

linux中sigint和sigterm的區別

SIGINT 和 SIGTERM 是在 Unix 及類 Unix 系統&#xff08;包括 Linux&#xff09;中用于進程間通信的信號&#xff0c;它們都可以用于請求進程終止&#xff0c;區別如下&#xff1a; 1、信號編號與定義 在信號機制里&#xff0c;每個信號都有對應的編號&#xff0c;這便于系統…

一套SaaS ERP管理系統源碼,支持項目二開商用,SpringBoot+Vue+ElementUI+UniAPP

ERP管理系統源碼&#xff0c;一款適用于小微企業的SaaS ERP管理系統源碼, 采用最新的技術棧開發(SpringBootVueElementUIUniAPP)&#xff0c;讓企業簡單上云。 專注于小微企業的應用需求&#xff0c;如企業基本的進銷存、詢價&#xff0c;報價, 采購、銷售、MRP生產制造、品質…

2025 新生 DL-FWI 培訓

摘要: 本貼給出 8 次討論式培訓的提綱, 每次培訓 1 小時. 1. Basic concepts 主動學習: 提問, 理解, 繼續追問. 通過不斷迭代, 逐步提升問題的質量, 加深理解. 1.1 Seismic exploration 問 DeepSeek (下同): 為什么進行地震勘探? 問: 地震勘探一般的深度是多少? 1.2 Sesmi…

mac電腦pytest生成測試報告

時隔了好久再寫代碼&#xff0c;感覺我之前的積累都白費了&#xff0c;全部忘記了&#xff0c;看來每一步都有記錄對于我來說才是最好的。 最近又要重新搞接口自動化&#xff0c;然而是在mac電腦&#xff0c;對于我長期使用windows的人來說真的是個考驗&#xff0c;對此次過程…

神經輻射場(NeRF)技術解析:3D重建與虛擬世界的未來

神經輻射場&#xff08;NeRF&#xff09;技術解析&#xff1a;3D重建與虛擬世界的未來 ——從算法突破到元宇宙基礎設施的演進之路 摘要 本文通過算法演進圖譜、訓練流程解析、PyTorch代碼實戰及產業應用洞察&#xff0c;構建從學術創新到工程落地的完整技術框架。實驗數據顯…

ES搜索知識

GET /categories/1/10?name手機 // 按名稱過濾 GET /categories/1/10?type電子產品 // 按類型過濾 GET /categories/1/10?name手機&type電子產品 // 組合過濾 查詢參數 ApiOperation(value "獲取商品分類分頁列表")GetMapping("{page}/{limit}")…

【Docker】Docker拉取部分常用中間件

一、拉取MySQL 這里以Docker拉取MySQL5.7為例 #拉取鏡像 docker pull mysql:5.7 docker run -d --name oj-mysql -p 3306:3306 -e "TZAsia/Shanghai" -e "MYSQL_ROOT_PASSWORD123456" mysql:5.7 -e 參數用于設置容器內的環境變量。TZ 是用于設置時區的環…

在 Ubuntu 上離線安裝 ClickHouse

在 Ubuntu 上離線安裝 ClickHouse 的步驟如下: 一.安裝驗證 # 檢查服務狀態 sudo systemctl status clickhouse-server #刪除默認文件 sudo rm /etc/clickhouse-server/users.d/default-password.xml # 使用客戶端連接 clickhouse-client --password

Linux 部署以paddle Serving 的方式部署 PaddleOCR CPU版本

強烈建議您在Docker內構建Paddle Serving&#xff0c;更多鏡像請查看Docker鏡像列表。 提示-1&#xff1a;Paddle Serving項目僅支持Python3.6/3.7/3.8/3.9&#xff0c;接下來所有的與Python/Pip相關的操作都需要選擇正確的Python版本。 提示-2&#xff1a;以下示例中GPU環境均…

AOSP Android14 Launcher3——Launcher的狀態介紹LauncherState類

Launcher3中有一個跟Launcher狀態相關的類&#xff0c;叫LauncherState LauncherState 是 Launcher3 中定義各種用戶界面狀態的抽象基類。你可以把它想象成一個狀態機&#xff0c;定義了 Launcher 可能處于的不同視覺和交互模式&#xff0c;例如主屏幕、所有應用列表、最近任務…