久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術(shù)文章
文章詳情頁

排查Java應(yīng)用內(nèi)存泄漏問題的步驟

瀏覽:71日期:2022-08-20 15:53:34

什么是內(nèi)存泄漏

內(nèi)存泄漏是指java應(yīng)用的堆內(nèi)存使用率持續(xù)升高,直至內(nèi)存溢出。內(nèi)存泄漏的的原因可能有多種

分配給應(yīng)用程序的內(nèi)存本身過小。而應(yīng)用的業(yè)務(wù)代碼,確實需要生成大量的對象 代碼bug,某些需要被回收的對象,由于代碼bug,卻持續(xù)的被引用,導(dǎo)致java虛擬機無法回收這些對象。從而撐爆內(nèi)存

無論哪種內(nèi)存泄露,我們的解決方法都是要定位到具體是什么對象,占用了大量內(nèi)存,從而方便我們基于此進行代碼分析,debug,找出代碼問題。而能夠幫助我們實現(xiàn)這一目的的方式就是獲取java應(yīng)用的內(nèi)存 dump

如何獲取內(nèi)存dump

使用命令獲取jcmd

首先需要獲取java 進程id,獲取到j(luò)ava進程后使用命令

jcmd <pid> GC.heap_dump <file-path>

如果執(zhí)行報錯

com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file: target process not responding or HotSpot VM not loaded

一般是由于執(zhí)行jcmd的用戶同java應(yīng)用本身不是同一個用戶。解決辦法是切換到應(yīng)用對應(yīng)的用戶下再執(zhí)行上述命令

sudo -u [userid] /jcmd <pid> GC.heap_dump <file-path>

如果應(yīng)用在本地

如果應(yīng)用是在本地,除了用上述方法外,還可以用JVisualVM 、JConsole

程序異常退出時自動dump

但更為重要的,為了準確還原應(yīng)用故障的現(xiàn)場,最好通過指定java 執(zhí)行參數(shù),在程序出錯時,自動dump

java -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=<file-or-dir-path>

如何分析內(nèi)存dump

獲取到dump文件后,需要使用eclipse.org 出品的 Memory Analyzer 工具。使用其中的Dominator Tree,查看各對象的內(nèi)存占用情況

排查Java應(yīng)用內(nèi)存泄漏問題的步驟

找出占用內(nèi)存最多的對象及其類信息

排查Java應(yīng)用內(nèi)存泄漏問題的步驟

以上就是排查Java應(yīng)用內(nèi)存泄漏問題的步驟的詳細內(nèi)容,更多關(guān)于Java應(yīng)用內(nèi)存泄漏的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標簽: Java
相關(guān)文章:
主站蜘蛛池模板: 安丘市| 沅陵县| 民勤县| 曲阳县| 海宁市| 陆河县| 石首市| 如东县| 怀化市| 三门县| 平武县| 无锡市| 固阳县| 汝城县| 普兰县| 蒙山县| 元江| 兴国县| 区。| 阿拉尔市| 临城县| 阜宁县| 萝北县| 苍梧县| 安国市| 梨树县| 胶州市| 香河县| 巫溪县| 抚远县| 巨鹿县| 平江县| 酉阳| 灌阳县| 镇赉县| 曲阜市| 西和县| 五河县| 鱼台县| 内丘县| 乐陵市|