Java OutOfMemoryError和JProfiler
JProfiler介绍
这是由ej-technologies开发的Java应用程序性能诊断工具。
这次我们将使用JProfiler来诊断应用程序的性能。
安装
安装JProfiler用户界面:
https://www.ej-technologies.com/download/jprofiler/files
用JProfiler进行诊断
以下是示例代码。
public class OOMTest {
public static void main(String[] args) {
int i=0;
List<String> list = new ArrayList<>();
String str = "OOM and GC";
while(true) {
list.add(str);
str = str + str;
i = i++;
}
}
}
执行选项
-Xms5m -Xmx5m -XX:-DoEscapeAnalysis -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=C:\dengxinrong\44.JVM
执行结果
java.lang.OutOfMemoryError: Java heap space
Dumping heap to C:\dengxinrong\44.JVM\java_pid24120.hprof ...
Heap dump file created [3939064 bytes in 0.012 secs]
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOfRange(Arrays.java:3664)
at java.lang.String.<init>(String.java:207)
at java.lang.StringBuilder.toString(StringBuilder.java:413)
at OOMTest.main(OOMTest.java:14)