jvm內存溢出排查(使用idea自帶的內存泄漏分析工具)

文章目錄

  • 1.確保生成內存溢出文件
  • 2.使用idea自帶的內存泄漏分析工具
  • 3.具體實驗一下

1.確保生成內存溢出文件

想分析堆內存溢出,一定在運行jar包時就寫上參數-XX:+HeapDumpOnOutOfMemoryError,可以看我之前關于如何運行jar包的文章。若你沒有寫。可以寫上參數,重啟你的項目,等你的項目發生下一次堆內存溢出異常,在運行的同級文件夾,將產生類似這樣一個文件java_pid74935.hprof,若你已經有這個文件,那么可以繼續往下看。
在這里插入圖片描述

2.使用idea自帶的內存泄漏分析工具

在Java界,有太多這樣的工具了,如:

  • Eclipse Memory Analyzer(MAT):MAT是一個功能強大的內存分析工具,用于分析Java堆轉儲文件(如.hprof文件)。它可以幫助你識別內存泄漏、查找對象的引用鏈、分析對象的大小和數量等。MAT提供直觀的圖形界面和交互式報告,使你能夠深入了解應用程序的內存使用情況。

  • VisualVM:VisualVM是一個功能齊全的Java虛擬機監控和分析工具。它包含了一系列插件和功能,可以監視應用程序的內存使用、線程狀況、垃圾收集等。VisualVM還提供了堆轉儲和線程轉儲功能,方便你進行更詳細的分析。

  • YourKit Java Profiler:YourKit是一款商業級的Java性能分析工具,具有強大的內存分析功能。它可以幫助你發現內存泄漏、定位內存消耗高的代碼路徑,并提供詳細的對象和堆棧跟蹤信息。YourKit還提供了實時的性能監控和分析,幫助你優化應用程序的性能。


這些工具的使用下載,百度谷歌都有相關資料。But!!!我這么懶的人你指望我下載一個工具去分析???成心難為我是吧!

我直接用idea!在新版本的idea里,有這么一個東西,像一個儀表盤,自打我學習Java,用上idea,一直不知道這是做什么的,直到今天為了搞內存分析,這可太神奇了,IDEA yyds!

在這里插入圖片描述

小儀表盤的名字叫Profiler,至于這個Profiler在idea的哪里打開。谷歌給我的信息如下:

要使用CPU Profiler,請在IntelliJ IDEA 中打開「Run」菜單,然后選擇「Profile CPU」。 您還可以在「View」菜單中選擇「Tool Windows」,并選擇「CPU Profiler」,以顯示該工具的圖形界面。

不過我這個idea2023版本貌似頁面上就有。這里讓我們打開溢出heap文件。

在這里插入圖片描述
打開后頁面如下

在這里插入圖片描述

觀察可知。大對象是哪個類,在哪一行產生,占據了多少內存,以及餅圖其實都有,這里只是引路,至于內存分析的理論知識,就需要你再研究研究了。基于這一篇內容,你是可以知道如何用工具分析內存溢出文件,還有怎么產生內存溢出文件。

3.具體實驗一下

在這里插入圖片描述
如圖,我刻意在這個類里寫了個不斷產生對象的代碼,刻意制造堆溢出。然后分析可得。

在這里插入圖片描述
直接檢測到這個類的哪一行不斷產生大對象導致堆溢出,easy~

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

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

相關文章

Keepalived入門指南:實現故障轉移和負載均衡

文章目錄 一、簡介1. Keepalived概述2. 高可用性和負載均衡的重要性 二、故障轉移1. 什么是故障轉移2. Keepalived的故障轉移原理a) VRRP協議b) 虛擬路由器ID和優先級 3. 配置Keepalived實現故障轉移a) 主備服務器的設置b) 監控網絡接口c) 虛擬IP的配置d) 備份服務器接管流程 三…

Python學習筆記_基礎篇(九)_面向對象編程

本篇內容: 1、反射2、面向對象編程3、面向對象三大特性4、類成員5、類成員修飾符6、類的特殊成員7、單例模式 反射 python中的反射功能是由以下四個內置函數提供:hasattr、getattr、setattr、delattr,改四個函數分別用于對對象內部執行:檢…

el-form自定義校驗規則

Vue 的 el-form 組件可以使用自定義校驗規則進行表單驗證。自定義校驗規則可以通過傳遞一個函數來實現,該函數接受要校驗的字段的值作為參數,并返回一個布爾值或一個 Promise 對象。 下面是一個示例,演示如何在 el-form 中使用自定義校驗規則…

若依前端npm run dev啟動時報錯

本文主要解決問題:若依前端npm run dev啟動時報錯,解決辦法。 目錄 1、第1種解決方案(親測有效) 2、第2種解決方案(親測有效) Error: error:0308010C:digital envelope routines::unsupportedat new Hash (node:internal/crypto/hash:67:19)at Object.createHash (node…

解決 adb install 錯誤INSTALL_FAILED_UPDATE_INCOMPATIBLE

最近給游戲出包,平臺要求 v1 簽名吧,AS 打包后,adb 執行安裝到手機,我用的設備是google pixel6 , android 系統 13, 提示如下: adb install -r v5_android_202308161046.apk Performing Streamed Install a…

centos 安裝.net 6 sdk

按照以下步驟在 CentOS 上安裝 .NET 6 SDK: 更新系統: sudo yum update安裝依賴項: sudo yum install -y curl libunwind libicu下載并添加 Microsoft 的軟件包存儲庫密鑰: sudo rpm -Uvh https://packages.microsoft.com/config/…

單片機第一季:零基礎13——AD和DA轉換

1,AD轉換基本概念 51 單片機系統內部運算時用的全部是數字量,即0 和1,因此對單片機系統而言,無法直接操作模擬量,必須將模擬量轉換成數字量。所謂數字量,就是用一系列0 和1 組成的二進制代碼表示某個信號大…

Linux -- 進階 Autofs自動掛載服務 實驗詳解

服務端創建共享目錄, 客戶端實現自動掛載 第一步 : 客戶端,服務端 均關閉安全軟件 [rootserver ~]# setenforce 0 [rootserver ~]# systemctl stop firewalld [rootnode1 ~]# setenforce 0 [rootnode1 ~]# systemctl stop firewalld 第二…

在K8s上處理nginx

基本說明 創建一個名為ssl的TLS類型的Secret對象,用于存儲證書和密鑰信息。 kubectl create secret tls ssl --certserver.crt --keyserver.key配置Nginx的events塊,設置worker連接數為1024。 events {worker_connections 1024; }配置Nginx的http塊&a…

MyBaits(單獨使用,與整合無關)小白版

文章目錄 概述比較配置寫xml加載上面配置并執行加載配置的方法方式一 執行方法方式一方式二(MyBatis映射器) 寫配置文件的映射文件設置對象的別名(簡寫)獲取自動生成的主鍵 查詢結果和java的映射規則基本類型映射:簡單對象映射:嵌…

加鹽加密算法

MD5加密加鹽加密項目密碼升級 MD5加密 MD5一系列公式進行復雜數學運算;特點:(用途校驗和、計算hash值方式、加密) 1:定長;無論原始數據多長;算出的結果都是4或者8字節的版本。 2:沖…

Java多線程實戰

Java多線程實戰 java多線程(超詳細) java自定義線程池總結 Java創建線程方式 方法1,繼承Thread類 方法2,實現Runable接口 方法2-2,匿名內部類形式lambda表達式 方法3,實現Callable接口,允許…

【深入理解Linux內核鎖】三、原子操作

我的圈子: 高級工程師聚集地 我是董哥,高級嵌入式軟件開發工程師,從事嵌入式Linux驅動開發和系統開發,曾就職于世界500強企業! 創作理念:專注分享高質量嵌入式文章,讓大家讀有所得! 文章目錄 1、原子操作思想2、整型變量原子操作2.1 API接口2.2 API實現2.2.1 原子變量結…

Shell 函數

Shell 函數 linux shell 可以用戶定義函數,然后在shell腳本中可以隨便調用。 shell中函數的定義格式如下: [ function ] funname [()] { action; [return int;] } 說明: 1、可以帶function fun() 定義,也可以直接fun…

log4j:WARN No appenders could be found for logger問題

本文將idea場景下的使用。 IDEA中,將配置文件命名為log4j.properties(該命名才會被自動加載), 并放到某個目錄下(通常放到resources目錄),并在resources上右鍵,找到Mark Directory a…

微信程序 自定義遮罩層遮不住底部tabbar解決

一、先上效果 二 方法 1、自定義底部tabbar 實現: https://developers.weixin.qq.com/miniprogram/dev/framework/ability/custom-tabbar.html 官網去抄 簡單寫下:在代碼根目錄下添加入口文件 除了js 文件的list 需要調整 其他原封不動 代碼&#xf…

Hadoop數據遷移distcp

Hadoop數據遷移distcp 準備工作 確認源集群(a),目標集群(b)確認a集群的主節點和b集群的主節點確認兩個集群的網絡相通確認遷移模式(全量遷移還是增量遷移),這里選擇全量遷移 遷移文件 遷移t…

【路由協議】使用按需路由協議和數據包注入的即時網絡模擬傳遞率(PDR)、總消耗能量和節點消耗能量以及延遲研究(Matlab代碼實現)

💥💥💞💞歡迎來到本博客????💥💥 🏆博主優勢:🌞🌞🌞博客內容盡量做到思維縝密,邏輯清晰,為了方便讀者。 ??座右銘&a…

斯坦福「小鎮」開源AI智能體;小米應用商店將要求AI應用符合資質標準

🦉 AI新聞 🚀 斯坦福「小鎮」開源AI智能體 摘要:斯坦福研究人員開源了一個類似《西部世界》的數字化「小鎮」,里面有25個AI智能體可以生活、工作、社交。這項研究被視為AGI的重要開端,可能會改變游戲、企業應用領域。網友期待這項技術改善游戲NPC的交互…

PyMuPDF`庫實現PDF旋轉功能

本文介紹了一個簡單的Python應用程序,用于將PDF文件轉換為旋轉90度的PDF文件。主要用于csdn網站中導出的博客pdf是橫向的,看起來不是很方便,才想到用python編制一個將pdf從橫向轉為縱向的功能。 功能 該PDF轉換工具具有以下功能&#xff1a…