面试题:JVM内存泄露服务器会有什么表现?怎么处理?

来源

阿里-技术-1面

我的回答

  • 刚开始内存泄露少的时候,没什么影响,到后面,会频繁的进行Full GC。
  • 面试官:那CPU的表现是怎样的呢?
    我:CPU使用率会很高,因为现在的垃圾回收器一般是使用的并行回收,会使用到多个CPU。

更完美的答案

  • 刚开始内存泄露少
    刚开始内存泄露少,没什么影响。

  • 频繁full gc+cpu利用率高
    但是内存泄露多的时候,会频繁的进行Full GC,这就会导致JVM对外部请求的响应速度变慢,并且CPU的使用率会很高,因为GC的时候,一般是使用并行回收,会使用到多个CPU。

  • OOM
    再进一步发展,通过频繁的Full GC,也无法回收内存来分配空间给新创建的对象的时候,就会出现内存溢出OOM。

  • 如何排查
    如果是在OOM之前发现了问题,可以使用jmap导出内存快照,然后查看里面有哪些常驻内存的对象,可以根据对象的大小进行查看,也可以根据对象的数量进行查看,初步排查大对象或者大量的相同的对象的泄露导致的问题。
    如果是在OOM之后发现了问题,可以通过在测试环境找问题,启动JVM前,要把发生OOM时导出内存快照这个参数启动,其实我们的生产环境都可以无脑把这个参数加上。然后对核心接口,经常访问的接口进行压测,然后找出内存泄露的对象。
    找到可疑对象之后,再在代码里面排查,重点排查的代码是上一个迭代发布的功能所涉及到的代码,因为产生内存泄露问题的代码,一般是在上个迭代开发出来的。

欢迎大家在评论区一起交流、指正

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值