out of memory dump分析

1 设置-Xms和-Xmx相等,避免内存频繁回收申请

2 -XX:+AlawaysPreTouch可避免预热:

如果程序最开始运行就需要申请3g内存,该参数可以帮助直接申请3g内存,避免频繁申请内存。

3、out of memory解决方案(以下均假设不确定哪出问题)

4 例子

4.1 编写出现OutOfMemoryError的代码

/**
 * @author lomo
 * @date 2020/11/25 21:53
 * @description
 */
public class OOMTest {
    private static volatile boolean flag = true;

    public static void main(String[] args) {
        ExecutorService executorService = Executors.newFixedThreadPool(2);
        while (flag) {
            executorService.submit(() -> {
                System.out.println(Thread.currentThread().getName());
                try {
                    Thread.sleep(3000L);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            });
        }
    }

}

4.2 IDEA配置JVM的启动参数

点击Edit Configurations...

-Xms60m -Xmx60m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=D:\logs

5. 分析

5.1 Dump下的文件:

5.2

采用IBM HeapAnalyzeer

链接: https://pan.baidu.com/s/1nA9hqDSpt3liRDuBAV2ZMA 提取码: ysq7

下载完成之后是hump分析.jar

运行jar包


选择我们dumping下来的.hprof文件


1

2

3

基本上就能看出问题出在哪

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容