如何查看java程序占用内存,java – 内存分析:如何检测哪个应用程序/包占用了太多内存...

我在这里遇到一种情况,我们运行的Java EE服务器上部署了多个应用程序.最近,我们经常遇到OutOfMemoryException.我们怀疑某些应用程序可能表现不佳,可能是泄漏,或者其他什么.

问题是,我们无法确定哪一个.我们已经运行了一些内存分析器(比如YourKit),并且它们非常善于告诉哪些类使用最多的内存.但是它们没有显示类之间的关系,所以这给我们留下了这样的情况:我们看到有很多字符串和int数组以及HashMap条目,但是我们无法确定它们是哪个应用程序或包来自.

有没有办法知道这些对象来自哪里,所以我们可以尝试查明分配最多内存的包(或应用程序)?

解决方法:

在这种情况下,有几件事情可以做:

> Configure the Java EE application server to produce a heap dump on OOME.自1.5天起,此功能可通过JVM参数获得.一旦获得转储,就可以使用像Eclipse MAT这样的工具离线分析它.重要的是找出支配树.

>在测试服务器上执行内存分析; Netbeans很擅长这个.在分析根本原因时,这必然需要花费更多时间,因为必须存在内存分配失败的确切条件.如果您确实进行了自动集成/功能测试,那么推断根本原因会更容易.诀窍是定期进行堆转储,并分析导致堆消耗增加的类.可能不一定存在泄漏 – 可能是堆大小不足的情况.

标签:java,memory-management,memory-leaks,profiling,java-ee

来源: https://codeday.me/bug/20190701/1342598.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值