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
基本上就能看出问题出在哪
网友评论