监视和检测Java应用程序中的内存泄漏

因此,您的应用程序内存不足,您日夜不停地分析应用程序,以期捕获对象中的内存漏洞。 后续步骤将说明如何监视和检测您的内存泄漏,以确保您的应用程序安全。

1.怀疑内存泄漏

如果您怀疑有内存泄漏,可以使用一种方便的方法来确保它确实在使用jconsole。 您可以在本地或远程将jconsole连接到您的应用程序,并使其监视一段时间(小时,半天,隔夜,周..)。将jconsole连接到您的应用程序后,开始分析“内存”选项卡。 内存泄漏的怀疑看起来像这样:

2.如何在您的应用程序中查找泄漏源

为此,我建议使用jisualVM。 该工具是JDK的一部分。 在jvisualVM内部,您可以进行堆转储(在“监视器”选项卡中)。 请记住,无法远程创建堆转储。 您需要在同一台计算机上运行jvisualvm或执行jmap命令来生成Heap-Dump文件,然后将其导入到jvisualvm中。

* Jmap是一个oracle工具,可打印给定进程的所有对象内存映射树。 这是一个jmap文档。

因此,基本上,您是在远程服务器(例如生产环境)上运行jmap,然后在本地分析该文件。 我建议做几个堆转储。 无论您是否有内存泄漏,这都将为您提供更好的画面。

3.分析堆转储文件

我个人喜欢使用MAT(内存分析器)( http://www.eclipse.org/mat/ )。 MAT获取堆转储文件,并帮助您查找内存泄漏。 MAT准确显示哪些实例具有内存增长可疑性。 您可能会注意到Java库实例是“问题可疑者”,例如:“ java.lang.Class”,但这很正常。

泄漏检测示例

在这里,您可以看到疑似泄漏组件的确切实例。

4.分析可疑物体

下一步是按可疑实例的详细信息字段并调查其中的对象:

在上面的示例中,我们可以清楚地看到TreeMap类型的字段正在增长。

5.修复泄漏,然后再次运行测试

现在剩下的是了解并修复泄漏源,但是对于每个对象来说,这都是个别的。 这些分步指导将帮助您检测泄漏的内存对象。


翻译自: https://www.javacodegeeks.com/2013/05/monitoring-and-detecting-memory-leaks-in-your-java-application.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值