Jprofiler分析OOM内存溢出
在项目中,如果突然出现了OOM故障,该如何定位并排除? 我们需要借助内存快照分析工具如MAT,Jprofiler, jvisualvm, arthas ,jconsole 等,本文示例jpfrofiler的使用。
1.堆溢出代码
先写一个堆溢出的程序:
package com.lchtest;
import java.util.ArrayList;
import java.util.List;
public class JvmSizeTest {
public void testHeap(){
//堆溢出
List<byte[]> list = new ArrayList<>();
int i=0;
while (true){
list.add(new byte[5*1024*1024]);
// System.out.print("count is: "+(++i));
}
}
int num = 1;
public void testStack(){
//栈溢出
num++;
this.testStack();
}
public static void main(String[] args) {
long max = Runtime.getRuntime().maxMemory();
long total = Runtime.getRuntime().totalMemory();
System.out.println("max:" + (double) max/1024/1024 +

本文介绍了如何通过JProfiler处理Java OOM内存溢出问题,包括编写堆溢出代码,设置JVM参数以在发生错误时dump内存信息,详细分析dump文件以找出大对象和问题代码,以及在实际生产环境中如何利用jmap工具进行堆内存分析。
最低0.47元/天 解锁文章
56

被折叠的 条评论
为什么被折叠?



