0%

java | 内存溢出 「堆」

讲解堆的内存溢出。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package com.redisc;

import lombok.extern.slf4j.Slf4j;

import java.util.ArrayList;
import java.util.List;

class A {
};

class B {
};

@Slf4j(topic = "c.Run")
public class Run {

static A a = new A();
static B b = new B();

public static void main(String[] args) throws Exception {
int i = 0;
try {
List<String> list = new ArrayList<>();
String a = "hello";
while (true) {
list.add(a);
a = a + a;
i++;
}
} catch (Throwable e) {
e.printStackTrace();
System.out.println(i);
}

}

}

输出

1
2
3
4
5
6
7
java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:3332)
at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:124)
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:448)
at java.lang.StringBuilder.append(StringBuilder.java:136)
at com.redisc.Run.main(Run.java:27)
25
请我喝杯咖啡吧~