【JVM】常见调试排错场景、内存与线程Dump分析

OOM分析

Java堆内存溢出

启动参数:

  • -Xms250m -Xmx250m ,最大最小堆内存250m,禁止自动扩展内存
  • -XX:+HeapDumpOnOutOfMemoryError:在发生OOM时进行堆内存Dump生成快照
public class oomController {
   
    
    @RequestMapping(value = "/test", method = RequestMethod.GET)
    public @ResponseBody
    void test() {
   
        List<TestInst> testInstList = new ArrayList<>();
        Long i = 0L;
        while (true) {
   
            TestInst testInst = new TestInst();
            testInstList.add(testInst);
        }
    }
}

class TestInst {
   
    String name;
    String desc;
}
  • 不不断的创建对象,并且保证GC Roots到对象之间有 可达路路径来避免垃圾回收机制清除这些对象
  • 启动项目并调用上述方法,项目将马上报错内存溢出:
java.lang.OutOfMemoryError: Java heap space
Dumping heap to java_pid98284.hprof ...
Heap dump file created [338473308 bytes in 1.782 secs]
七月 19, 2021 11:09:28 下午 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed; nested exception is java.lang.OutOfMemoryError: Java heap space] with root cause
java.lang.OutOfMemoryError: Java heap space
	at java.util.Arrays.copyOf(Arrays.java:3210)
	at java.util.Arrays.copyOf(Arrays.java:3181)
	at java.util.ArrayList.grow(ArrayList.java:265)
	at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:239)
	at java.util.ArrayList.ensureCapacityInternal(ArrayList.java:231)
	at java.util.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值