监视和检测Java应用程序中的内存泄漏
因此,您的應(yīng)用程序內(nèi)存不足,您日夜不停地分析應(yīng)用程序,以期捕獲對(duì)象中的內(nèi)存漏洞。 后續(xù)步驟將說(shuō)明如何監(jiān)視和檢測(cè)您的內(nèi)存泄漏,以確保您的應(yīng)用程序安全。
1.懷疑內(nèi)存泄漏
如果您懷疑有內(nèi)存泄漏,可以使用一種方便的方法來(lái)確保它確實(shí)在使用jconsole。 您可以在本地或遠(yuǎn)程將jconsole連接到您的應(yīng)用程序,并使其監(jiān)視一段時(shí)間(小時(shí),半天,隔夜,周..)。將jconsole連接到您的應(yīng)用程序后,開(kāi)始分析“內(nèi)存”選項(xiàng)卡。 內(nèi)存泄漏的懷疑看起來(lái)像這樣:
2.如何在您的應(yīng)用程序中查找泄漏源
為此,我建議使用jisualVM。 該工具是JDK的一部分。 在jvisualVM內(nèi)部,您可以進(jìn)行堆轉(zhuǎn)儲(chǔ)(在“監(jiān)視器”選項(xiàng)卡中)。 請(qǐng)記住,無(wú)法遠(yuǎn)程創(chuàng)建堆轉(zhuǎn)儲(chǔ)。 您需要在同一臺(tái)計(jì)算機(jī)上運(yùn)行jvisualvm或執(zhí)行jmap命令來(lái)生成Heap-Dump文件,然后將其導(dǎo)入到j(luò)visualvm中。
* Jmap是一個(gè)oracle工具,可打印給定進(jìn)程的所有對(duì)象內(nèi)存映射樹(shù)。 這是一個(gè)jmap文檔。
因此,基本上,您是在遠(yuǎn)程服務(wù)器(例如生產(chǎn)環(huán)境)上運(yùn)行jmap,然后在本地分析該文件。 我建議做幾個(gè)堆轉(zhuǎn)儲(chǔ)。 無(wú)論您是否有內(nèi)存泄漏,這都將為您提供更好的畫(huà)面。
3.分析堆轉(zhuǎn)儲(chǔ)文件
我個(gè)人喜歡使用MAT(內(nèi)存分析器)( http://www.eclipse.org/mat/ )。 MAT獲取堆轉(zhuǎn)儲(chǔ)文件,并幫助您查找內(nèi)存泄漏。 MAT準(zhǔn)確顯示哪些實(shí)例具有內(nèi)存增長(zhǎng)可疑性。 您可能會(huì)注意到Java庫(kù)實(shí)例是“問(wèn)題可疑者”,例如:“ java.lang.Class”,但這很正常。
泄漏檢測(cè)示例
在這里,您可以看到疑似泄漏組件的確切實(shí)例。
4.分析可疑物體
下一步是按可疑實(shí)例的詳細(xì)信息字段并調(diào)查其中的對(duì)象:
在上面的示例中,我們可以清楚地看到TreeMap類型的字段正在增長(zhǎng)。
5.修復(fù)泄漏,然后再次運(yùn)行測(cè)試
現(xiàn)在剩下的是了解并修復(fù)泄漏源,但是對(duì)于每個(gè)對(duì)象來(lái)說(shuō),這都是個(gè)別的。 這些分步指導(dǎo)將幫助您檢測(cè)泄漏的內(nèi)存對(duì)象。
翻譯自: https://www.javacodegeeks.com/2013/05/monitoring-and-detecting-memory-leaks-in-your-java-application.html
總結(jié)
以上是生活随笔為你收集整理的监视和检测Java应用程序中的内存泄漏的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 马鞍山物价局房产备案价官网(马鞍山物价局
- 下一篇: Neo4j Java Rest绑定入门(