java进程出现内存问题排查方案

       内存问题排查起来相对场景也比较多。主要包括OOM、GC问题和堆外内存。一般来讲,我们会先用free命令先来检查一发内存的各种情况。

第一种:堆内存

1. OOM

OutOfMemoryError: unable to create new native thread

无法创建新的本地线程:没有足够的内存空间给线程分配java栈,基本上还是线程池代码写的有问题,比如说忘记shutdown,所以说应该首先从代码层面来寻找问题,使用jstack或者jmap。如果一切都正常,JVM方面可以通过指定Xss来减少单个thread stack的大小

OutOfMemoryError: Java heap space

这是堆内存溢出:应该在代码中找,怀疑存在内存泄漏,通过jstack和jmap去定位问题。如果说一切都正常,才需要通过调整Xmx的值来扩大内存

OutOfMemoryError: Meta space

这是jdk1.8后出现的元空间溢出,它一般占用的物理内存,这个意思是元数据区的内存占用已经达到XX:MaxPermSize的最大值,可根据需要自行调整大小

第二种:栈内存溢出

java.lang.StackOverflowError

这个异常是指线程栈需要的内存大于Xss值,同样也是先进行排查,参数方面通过Xss来调整,不能调整过大,调整的太大可能又会引起OOM

 

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值