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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/367974.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

表单的隔行换色

<!DOCTYPE html><html lang"en"><head> <meta charset"UTF-8"> <title>表单隔行换色</title> <script> window.οnlοadfunction () {//1.获取表格 var tbleEle document.getElementById("tb1"); //…

点a链接写邮件小技巧

无意间发现这个技巧&#xff0c;分享一下&#xff01; 当点击mailto的邮件链接的时候&#xff0c;需要填写标题和内容&#xff0c;如果你想规定一个邮件标题格式&#xff0c;那这个可以帮助你。 代码&#xff1a; <a href"mailto:haozidaqianduan.com?subject投稿&a…

python字典的值可以是字典吗_python字典的值可以是字典吗

字典是python里的一种数据类型&#xff0c;特点是元素的无序性&#xff0c;和键key的唯一性。字典的创建方法是{key&#xff1a;values}&#xff0c;字典里的键key只能是不可变的数据类型(整型&#xff0c;字符串或者是元组)&#xff0c;值values可以是任何数据类型。字典里的一…

javascript 分时函数 分批次添加DOM节点 timeChunk

创建1000个webqq的qq好友列表, 一个好友用一个节点来表示 * timeChunk var timeChunk function(a, fn, sz, done) {var obj, t, len a.length;var start function() {for (var i 0; i < Math.min(sz || 1, a.length); i) {var obj a.shift();fn.call(this, obj);}}retu…

android webview sql database,websql在openDatabase报version mismatch错误,请问怎么解决?

在js里使用dataBase window.openDatabase(dbname, 1.0, dbdesc, dbsize, function() {});创建websql的时候经常报一下错误&#xff1a;unable to open database, version mismatch, 1.0 does not match the currentVersion of 重现场景&#xff1a;1、卸载hbuileder基座。2、使…

Neo4j Java Rest绑定入门(Heroku部署)

信不信由你&#xff0c;最近几天是我第一次尝试使用Neo4j的Java Rest Binding 。 我先前在Heroku上的Flavorwocky应用程序使用了Grails Neo4j插件以及其他一些东西&#xff0c;包括工作&#xff0c;嵌入式Neo4j规则。 但是&#xff0c;当部署到Heroku时&#xff0c;嵌入式不会…

前端性能优化规则

规则1-------减少HTTP请求 规则2-------使用内容发布网络 规则3-------添加Expires头控制缓存 规则4-------压缩组件 规则5-------将样式表放在顶部 规则6-------将脚步放在底部 规则7-------避免css表达式 规则8-------使用外部javaScript和CSS 规则9-------减少DNS查找 规则1…

uvm 形式验证_这究竟属于下一代验证的方法、语言还是工具?||路科验证

来源&#xff1a;内容由 公众号 路科验证 &#xff08;ID&#xff1a;Rocker-IC&#xff09;编辑部 原创&#xff0c;谢谢&#xff01;首先声明&#xff0c;便携式激励标准(PortableStimulus Standard, PSS)不是一种方法论&#xff0c;而是一种语言。使用语言我们可以有序地传递…

解读浮动闭合最佳方案:clearfix

之前给大家介绍两种浮动闭合的办法 &#xff0c;得知很多同学都在使用下面的骨灰级解决办法&#xff1a; .clear{clear:both;height:0;overflow:hidden;} 上诉办法是在需要清除浮动的地方加个div.clear或者br.clear&#xff0c;我们知道这样能解决基本清浮动问题。 但是这种…

redis 版的 hello world

为 redis 添加一个命令&#xff0c;效果如下图&#xff1a; 在 Server.h 中加入命令处理函数的声明&#xff1a; void meCommand(client *c); 在 Server.c 的命令表中加入&#xff1a; struct redisCommand redisCommandTable[] {{"me",meCommand,1,"rF",…

android commit apply,关于SharedPreference的commit和apply和ANR

看的SharedPreferencesImpl.java 办法呢 有人是不用apply直接自己异步commit. 也有人用反射把那个QueuedWork的sFinishers变量弄成empty.文档上说的commit和apply, Unlike commit,which writes its preference out to persistent storage synchronously, apply commits its cha…

从Datomic出发,革命性的非NoSQL数据库

我终于设法了解了当今最不寻常的数据库之一&#xff0c;Datomic&#xff0c;并希望与您分享。 感谢Stuart Halloway和他的工作室&#xff01; 为什么&#xff1f;&#xff01;&#xff1f; 我们将很快看到&#xff0c;Datomic与传统的RDBMS数据库以及各种NoSQL数据库有很大的不…

unity中单位是米还是厘米_401场地清理是什么,由施工单位做还是甲方做?造价中如何体现?...

场地清理是对公路用地范围及借土场范围内施工场地的清理、拆除和挖掘&#xff0c;以及必要的平整场地等有关作业。一、工作内容根据路基工程项目分表可以看出场地清理主要包括三方面内容&#xff1a;1、清理与拆除(1)清除表土路基范围内的树根、腐殖土、草皮或地表土不符合路基…

432 4.3.2 STOREDRV.Deliver; recipient thread limit exceeded

432 4.3.2 STOREDRV.Deliver; recipient thread limit exceeded 最近几天Hub-Mailbox服务器时不时就CPU超过90%。在任务管理器里面看到edgetransport占用大量CPU。进入EMC的队列查看器&#xff0c;看到邮箱数据库堵塞&#xff0c;队列上万。 堵塞的邮件大多是收件人自动回复、退…

SQL Server 关于列的权限控制

SQL Server 关于列的权限控制 原文:SQL Server 关于列的权限控制在SQL SERVER中列权限&#xff08;Column Permissions&#xff09;其实真没有什么好说的&#xff0c;但是好多人对这个都不甚了解&#xff0c;已经被人问了几次了&#xff0c;所以还是在这里介绍一下&#xff0c;…

简单的Spring Memcached – Spring缓存抽象和Memcached

在任何读取繁重的数据库应用程序中&#xff0c;缓存仍然是最基本的性能增强机制之一。 Spring 3.1发行版提供了一个很酷的新功能&#xff0c;称为Cache Abstraction 。 Spring Cache Abstraction为应用程序开发人员提供了一种简单&#xff0c;透明和分离的方式来实现任何缓存解…

华为鸿蒙系统是否上线,华为官方:鸿蒙系统2.0上线,手机能否搭载鸿蒙操作系统?...

原标题&#xff1a;华为官方&#xff1a;鸿蒙系统2.0上线&#xff0c;手机能否搭载鸿蒙操作系统&#xff1f;华为官宣鸿蒙已经过去有一年多的时间了。近日有消息称&#xff0c;在今年九月份华为即将举办开发者大会&#xff0c;届时正式发布鸿蒙2.0操作系统&#xff0c;相比之前…

图解 继电器模组接线图_交流接触器,继电器的知识你了解多少?(值得收藏)...

↑↑↑↑↑领取福利的小伙伴&#xff0c;先点击上方关注我们哦(文章字体较小&#xff0c;请点击放大后查看)交流接触器(Alternating Current Contactor)广泛用作电力的开断和控制电路。型号与参数交流接触器的型号很多&#xff0c; CJ0、CJ10系列交流接触器较为常用&#xff0c…

python - 数据类型

python - 数据类型&#xff1a; 基本类型&#xff1a; 1.数字 整数int 长整型long 浮点型float 2.字符串 文本str 字节bytes 3.布尔 true false数据集&#xff1a; 1.列表list 2.元祖tuple (数组) 3.字典dict 有序字典 无序字典 4.集合set 有序集合 无序集合-----------------…

CSS :root 测试

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>菜鸟教程(runoob.com)</title> <style> :root {background:blue;--vvv:60px; } </style> </head> <body><h1 style" font-siz…