forked from CPU-Code/java
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathStringOom.java
More file actions
35 lines (31 loc) · 830 Bytes
/
Copy pathStringOom.java
File metadata and controls
35 lines (31 loc) · 830 Bytes
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
/**
* User: cpucode
* Date: 2021/1/9
* Time: 11:48
* Github: https://github.com/CPU-Code
* CSDN: https://blog.csdn.net/qq_44226094
*/
package com.cpucode.java.string.table;
import java.util.HashSet;
import java.util.Set;
/*
* jdk6中:
* -XX:PermSize=6m -XX:MaxPermSize=6m -Xms6m -Xmx6m
*
* jdk8中:
* -XX:MetaspaceSize=9m -XX:MaxMetaspaceSize=9m -Xms9m -Xmx9m
* */
public class StringOom {
public static void main(String[] args) {
//使用Set保持着常量池引用,避免full gc回收常量池行为
Set<String> set = new HashSet<String>();
//让 PermSize 或 heap 产生OOM了
long i = 0;
while (true){
set.add(String.valueOf(i++).intern());
}
}
}
/*
Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded
* */