java内存泄漏问题排查(二)

day2: 程序依然崩溃,现在只能是怀疑内存溢出的问题。

因此先修改最大内存大小,并添加  -XX:+HeapDumpOnOutOfMemoryError ,以便在发生outofmemoryError异常的时候,能够记录dump文件。

新修改的start.bat文件如下: java -Xmx512m -Xms256m  -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=d:/a.dump -jar -jar ./data-migration-2.jar

自测:

新增测试程序,不停的new对象

    public void test() throws InterruptedException {
        List<SkuInfo> skuInfoList=new ArrayList<>();
        while (true)
        {
            skuInfoList.add(new SkuInfo("test","2018-09-10"));
            Thread.sleep(1);
            System.out.println("创建一条");
        }
    }

 然后,把启动程序设置成最大15M内存,使用java VisualVM监视查看内存情况

java -Xmx15m -Xms5m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=d:/a.dump -jar .\man-yao-client-1.0-SNAPSHOT.jar




加载dump文件进行分析,可以看到skuinfo有86067个实例。

猜你喜欢

转载自www.cnblogs.com/falcon-fei/p/9778377.html