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

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.修复泄漏,然后再次运行测试

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

参考: IdanFridman.com博客上的JCG合作伙伴 Idan Fridman 监视和检测Java应用程序中的内存泄漏 。

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

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

  1. Java应用程序中的内存泄漏和内存管理

    Java平台最突出的功能之一是其自动内存管理. 许多人错误地将此功能转换为Java中没有内存泄漏 . 但是,事实并非如此,我给人的印象是,现代Java框架和基于Java的平台,尤其是Android平台 ...

  2. java应用程序占用高内存_对Java应用程序中的内存问题进行故障排除

    java应用程序占用高内存 重要要点 解决内存问题可能很棘手,但是正确的方法和正确的工具集可以大大简化此过程. Java HotSpot JVM可以报告几种OutOfMemoryError消息,因此务 ...

  3. 翻译 | 理解Java中的内存泄漏

    猪年第一篇译文,大家多多支持! 原文自工程师baeldung博客,传送门 1. 介绍 Java 的其中一个核心特点是经由内置的垃圾回收机制(GC)下的自动化内存管理.GC 默默地处理着内存分配和释放工 ...

  4. 谈谈android中的内存泄漏

    写在前面 内存泄漏实际上很多时候,对于开发者来说不容易引起重视.因为相对于crash来说,android中一两个地方发生内存泄漏的时候,对于整体没有特别严重的影响.但是我想说的是,当内存泄漏多的时候, ...

  5. java内存漏洞_处理Java程序中的内存漏洞

    Java 程序中也有内存漏洞?当然有.与流行的观念相反,在 Java 编程中,内存治理仍然是需要考虑的问题.在本文中,您将了解到什么会导致内存漏洞以及何时应该关注这些漏洞.您还有机会实践一下在您自己的 ...

  6. Java应用程序中的SQL注入

    在本文中,我们将讨论什么是SQL注入攻击. 以及它如何影响任何Web应用程序使用后端数据库. 在这里,我专注于Java Web应用程序. 开放Web应用程序安全项目(OWAP)列出了SQL注入是Web ...

  7. 在独立Java应用程序中使用Tomcat JDBC连接池

    这是从我们的客人文章W4G伙伴克拉伦斯豪的作者临春3从A按. 您可能会在文章结尾找到本书的折扣券代码,仅适用于Java Code Geeks的读者! 请享用! 在需要数据访问权限的独立Java应用程序 ...

  8. Java web程序中备份oracle数据库

    Java web程序中备份oracle数据库 1.生成备份文件: public ActionForward createDmp(ActionMapping mapping, ActionForm fo ...

  9. 在 Java 应用程序中使用 Elasticsearch: 高性能 RESTful 搜索引擎和文档存储快速入门指南

    如果您使用过 Apache Lucene 或 Apache Solr,就会知道它们的使用体验非常有趣.尤其在您需要扩展基于 Lucene 或 Solr 的解决方案时,您就会了解 Elasticsear ...

最新文章

  1. Python --金字塔
  2. UDP 组播---你需要了解这些
  3. css中的em 简单教程 -- 转
  4. python3-pwntools教程_记一次five熬夜重装pwntools
  5. 开源开发工具_3个开源行为驱动的开发工具
  6. 漫画《灌篮高手》将拍电影?井上雄彦发文确认
  7. 拓端tecdat|R语言指数平滑法holt-winters分析谷歌Google Analytics博客用户访问时间序列数据
  8. VTK学习笔记(二十八)ExtractEnclosedPoints python示例
  9. 苹果电脑语音听写的问题(电话中间加-,或者想要大写应该怎么设置呢)
  10. 计算机数字键盘如何用,电脑小数字键盘不能使用的原因和解决方法
  11. python计算增长率_计算Pandas集团年增长率
  12. java小游戏_Java开发小游戏,30分钟教会你
  13. 【工具类】TimeLine功能的使用(一)
  14. Linux Kernel Security全景图系列之开篇
  15. 你的信用卡安全不?数据科学家怎么破解信用卡欺诈?
  16. 【小程序】如何实现一个可折叠的列表
  17. 对Java.io中一些类的归纳,层次结构图
  18. 【STM32F4系列】【HAL库】【自制库】RDA5807M收音机芯片驱动
  19. 2db多少功率_功率和dB的关系很详细
  20. 手写的几个鼠标移上按钮的特效

热门文章

  1. 583. 两个字符串的删除操作用时6ms的另类解法
  2. 如何下载、配置IDEA的Maven
  3. 使用阿里巴巴json映射_使用JSON模式验证来映射稀疏JSON
  4. maven配置junit5_JUnit 5和Selenium –改善项目配置
  5. 魔术方法 类 序列化_Java序列化魔术方法及其示例使用
  6. 公有云 私有云 混合云_混合云的承诺,收益和产品
  7. junit junit_JSON的JUnit Hamcrest Matcher
  8. stackoverflow_Stackoverflow:您尚未发现的7个最佳Java答案
  9. 来的多可选_您的框架有多可扩展性?
  10. 面向对象代码_面向对象的代码生成方法