Skip to content

Commit d156efc

Browse files
committed
优化
1 parent dacd65b commit d156efc

2 files changed

Lines changed: 24 additions & 3 deletions

File tree

MD/OOM-analysis.md

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
## Java 堆内存溢出
44

55
在 Java 堆中只要不断的创建对象,并且 `GC-Roots` 到对象之间存在引用链这样 `JVM` 就会不会回收对象。只要将`-Xms(最下堆)`,`-Xmx(最大堆)` 设置为一样禁止自动扩展堆内存。
6-
当使用一个 `while(true)` 循环来不断创建对象就会发生 `OutOfMemory`,还可以使用 `-XX:+HeapDumpOutofMemoryErorr` 当发生 OOM 时会自动 dump 堆栈
6+
当使用一个 `while(true)` 循环来不断创建对象就会发生 `OutOfMemory`,还可以使用 `-XX:+HeapDumpOutofMemoryErorr` 当发生 OOM 时会自动 dump 堆栈到文件中
77

88
伪代码:
99

@@ -18,5 +18,26 @@
1818

1919
当出现 OOM 时可以通过工具来分析 `GC-Roots` [引用链](https://github.com/crossoverJie/Java-Interview/blob/master/MD/GarbageCollection.md#%E5%8F%AF%E8%BE%BE%E6%80%A7%E5%88%86%E6%9E%90%E7%AE%97%E6%B3%95) ,查看对象和 `GC-Roots` 是如何进行关联的,是否存在对象的生命周期过长,或者是这些对象确实改存在的,那就要考虑将堆内存调大了。
2020

21+
```
22+
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
23+
at java.util.Arrays.copyOf(Arrays.java:3210)
24+
at java.util.Arrays.copyOf(Arrays.java:3181)
25+
at java.util.ArrayList.grow(ArrayList.java:261)
26+
at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:235)
27+
at java.util.ArrayList.ensureCapacityInternal(ArrayList.java:227)
28+
at java.util.ArrayList.add(ArrayList.java:458)
29+
at com.crossoverjie.oom.HeapOOM.main(HeapOOM.java:18)
30+
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
31+
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
32+
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
33+
at java.lang.reflect.Method.invoke(Method.java:498)
34+
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
35+
36+
Process finished with exit code 1
37+
38+
```
39+
`java.lang.OutOfMemoryError: Java heap space`表示堆内存溢出。
40+
41+
42+
## 方法区/运行时常量池溢出
2143

22-
## 方法区/运行时常量池溢出

src/main/java/com/crossoverjie/oom/HeapOOM.java renamed to src/main/java/com/crossoverjie/oom/heap/HeapOOM.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.crossoverjie.oom;
1+
package com.crossoverjie.oom.heap;
22

33
import java.util.ArrayList;
44
import java.util.List;

0 commit comments

Comments
 (0)