Java内存泄漏查找

Java内存泄漏查找Java 由于拥有自动垃圾回收机制 所以一般情况下 我们不需要考虑内存泄漏的问题 jvm 会自动收回无用的对象 所谓无用的对象 表示你的程序不可能再访问的对象 但是 有一种情况必须考虑 就是要防止容器 List Map 等 内的对象无限增大 因为对象存贮在容器中 会被容器引用 从而如果容器的有效 容器内的对象就不会释放 一旦真的出现内存泄漏 随着时间的推移 java 程序逐渐增大内存消耗 最后出现

Java由于拥有自动垃圾回收机制,所以一般情况下,我们不需要考虑内存泄漏的问题。jvm会自动收回无用的对象。所谓无用的对象,表示你的程序不可能再访问的对象。

但是,有一种情况必须考虑,就是要防止容器(List,Map等)内的对象无限增大。因为对象存贮在容器中,会被容器引用,从而如果容器的有效,容器内的对象就不会释放。

一旦真的出现内存泄漏,随着时间的推移,java程序逐渐增大内存消耗,最后出现OutOfMemory异常而终止。

如何查找内存泄漏?

这种情况下,一般需要找到内存泄漏的对象。也就是要找到哪个对象数量最大。我们可以利用JavaSDK 自带的工具 jmap

在命令行中输入: jmap -histo:live [java进程id]>C:Log.txt

例如:如果当前内存泄漏的程序进程id是 3696,但是进程还没有终止。这个时候,可以在命令行中输入 jmap -histo:live 3696>C:\\Log.txt

这样会将结果输入到C:\\Log.txt文件中,应写字板打开,可以看到对象数量以及占用内存情况:

……

以上日志可以看出,World.GameMap.ChangeTunAction类的实例数量有个,占用内存1.28G,因此可以断定,是这个类的对象没有释放造成内存泄漏。

查找源程序相关代码,可以迅速找到出错位置。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232827.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • myeclipse断点不起作用_idea进入下一个断点

    myeclipse断点不起作用_idea进入下一个断点
    window-preferences-tomcat-launch单击createlaunchconfiguration 正常能调试的Default下面会有你的项目,不能调试的可以把文件add进去就OK了

    2025年11月20日
    5
  • 手机框架_移动端框架_跨平台_汇总_哪个好[通俗易懂]

    uni-app【重点推荐】是一个使用Vue.js开发跨平台应用的前端框架,开发者编写一套代码,到7个平台,Android版iOS版H5版微信小程序版支付宝小程序版百度小程序版头条小程序版https://uniapp.dcloud.io/DCloud即数字天堂(北京)网络技术有限公司是W3C成员及HTML5中国产业联盟发起单位,旗下产品:…

    2022年4月12日
    43
  • form表单如何提交数据(表单中提交请求默认方式)

    Form表单提交数据的几种方式一、submit提交在form标签中添加Action(提交的地址)和method(post),且有一个submit按钮()就可以进行数据的提交,每一个input标签都需要有一个name属性,才能进行提交。当点击登陆时,向数据库发生的数据是:username=username&password=password.

    2022年4月12日
    81
  • IBM DS8700-IBM高端存储系统的全新成就

    IBM DS8700-IBM高端存储系统的全新成就

    2021年8月10日
    68
  • f stream_fstream

    f stream_fstreamofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间;在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符:1、插入器(  向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout2、析取器(>>)  从流中输入数据

    2025年11月24日
    7
  • axure菜单展开收起_axure菜单左右滑动

    axure菜单展开收起_axure菜单左右滑动这样可以实现菜单栏最小化,而且在你鼠标不移动到左上角时,小箭头会隐藏,效果就可以了。axure9.0版本在发布后HTML页面打开时总是在顶部弹出菜单既不美观也影响效果。本人axure小白,摸索半天后发现也不能完全关闭或者不显示(除非代码修改);解决方案就是在请求地址后面拼接。…

    2022年8月19日
    9

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号