Hobart-Ljw
2018-12-28 09:18
采纳率: 41.2%
浏览 654
已采纳

服务器内存被java后台程序消耗完

我把两个java基础后台服务部署到服务器上之后,每天早上都会有一个服务宕掉,
发现是内存被被消耗光了。图片的显示是重启了之后的,还剩下可用的 9个G的你内存,接近服务宕的那会,可用内存是只剩下300多MB
图片说明

我就每天都要自己去看一遍,然后再重启服务。

有什么办法可以比较好内存消耗排查问题呢?

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • 哈喽大海豚 2018-12-28 01:33
    已采纳

    推荐是用阿里巴巴的开源项目arthas,个人使用了感觉非常好。。。
    项目地址是https://github.com/alibaba/arthas

    配合jconsole、jvisualvm、jmap、jps、jstack、jhat、jstat这些使用可以很快找到原因。
    https://www.cnblogs.com/anxiao/p/6796644.html?utm_source=itdadao&utm_medium=referral

    还有xms设置的是初始化内存,2048的话有点大,持久代内存-XX:MaxPermSize设置2048也太大,占满所有内存。

    已采纳该答案
    打赏 评论
  • wgslucky 2018-12-28 01:54

    这个是你代码中有内存泄漏了,你想一下在代码中,哪个地方使用了缓存,但是却只有不停的往里面加对象,却没有删除策略。比如某个全局的Map或list之类的。

    打赏 评论
  • 创业的鱼 2018-12-28 02:15

    java自带的jvisualvm可以查看,还有很多工具可以百度一下,都长得差不多,像你这种情况肯定是代码哪块写的有问题,导致内存中东西太多,比如一直给容器中添加数据却没有清除策略,再比如用递归不慎写成了死循环/或者其他方式写的死循环等等。。。

    打赏 评论
  • Banboll 2018-12-28 06:17

    百度:eclipse mat 全名:eclipse mat - Eclipse Memory Analyzer Open Source Project
    是一个内存分析工具,可以自动分析可能存在的内存泄露问题以及大对象。具体使用方法,百度一下教程很多的,我觉得你的问题,用这个工具就够了。自己dump一分镜像就可以分析。

    打赏 评论

相关推荐 更多相似问题