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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Python学习之MacBook Pro中PyCharm安装pip以及itchat

    Python学习之MacBook Pro中PyCharm安装pip以及itchat前言:Mac中自带的python没有用,自己安装了一个PyCharm,网上很多人说安装Itchat后会安装到自带的Python中去。本文记录怎么安装到自己安装的Python3.7中去。主要技术来源于https://www.cnblogs.com/ace722/p/9697331.html,在此引用并表示感谢,以下只是精炼的步骤,具体可参考原博客。步骤一:首先查看自己是否有安装到pip,在Ter…

    2022年8月28日
    2
  • Pytorch 安装

    Pytorch 安装Pytorch安装已有Cuda9.0,anaconda3,用conda命令安装pytorchcondainstallpytorchtorchvisioncuda90-cpytorch验证是否安装成功python然后依次输入from__future__importprint_functionimporttorchx=torch.rand(5,3)p…

    2022年6月24日
    31
  • java随机数_Java随机「建议收藏」

    java随机数_Java随机「建议收藏」java随机数JavaRandomclassisusedtogenerateaseriesofrandomnumbers.JavaRandom类用于生成一系列随机数。Java随机类(JavaRandomClass)Randomclassispartofjava.utilpackage.Random类是java.util包的一部分。Anins…

    2022年7月7日
    21
  • 理解ABA问题_什么叫ABA

    理解ABA问题_什么叫ABA理解ABA问题1ABA问题的产生2原子引用AtomicReference3带时间戳的原子引用AtomicStampedReference解决ABA问题1ABA问题的产生所谓ABA问题,就是比较并交换的循环,存在一个时间差,而这个时间差可能带来意想不到的问题。比如线程1和线程2同时也从内存取出A,线程T1将值从A改为B,然后又从B改为A。线程T2看到的最终值还是A,经过与预估值的比较,二者相等,可以更新,此时尽管线程T2的CAS操作成功,但不代表就没有问题。有的需求,比如CAS,只注重头

    2025年6月8日
    3
  • 医咖会SPSS免费教程学习笔记—R*C卡方检验

    医咖会SPSS免费教程学习笔记—R*C卡方检验1.R*C卡方检验需要满足的假设(1)两个变量为无序分类变量(2)观测值相互独立(3)任意单元格的期望频数>52.SPSS实操请依次点击:分析—描述统计—交叉表—将变量拖入右侧相应的行和列框中—点击右侧的“统计”)选择“卡方”和“Phi和克莱姆V”—继续点击右侧的“单元格”—选择“实测”,“期望”,“行”,“列”和“调整后标准化”—确定3.两两比较标准化残差的绝对值>3,差异存在统计学意义…

    2022年5月13日
    70
  • pmos开关电路原理_高频开关电源电路图

    pmos开关电路原理_高频开关电源电路图​概述负载开关电路日常应用比较广泛,主要用来控制后级负载的电源开关。此功能可以直接用IC也可以用分立器件搭建,分立器件主要用PMOS加三极管实现。本文主要讨论分立器件的实现的细节。电路分析如下图所示R5模拟后级负载,Q1为开关,当R3端口的激励源为高电平时,Q2饱和导通,MOS管Q1的VGS<VGSth导通,R5负载上电,关断时负载下电。电路中R3为三极管Q2的限流电阻,R4为偏置电阻,R1R2为Q1的栅极分压电阻,C1C2为输出滤波电容。提出问题…

    2022年9月20日
    3

发表回复

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

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