OutOfMemoryError
堆内存不够时抛出OutOfMemoryError异常
- 测试代码
public class JavaVMHeapOOM {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
try {
while (true){
list.add(1);
}
}catch (Throwable throwable){
System.out.println(list.size());
System.out.println(throwable);
}
}
}
- 结果
设置不同的jvm参数,得到不同的结果
-Xms -X memory size 设置堆内存大小
-Xmx -X memory max 设置堆最大内存大小
-Dfile.encoding=UTF-8 -Xms5M -Xmx5M
360145
java.lang.OutOfMemoryError: Java heap space
-Dfile.encoding=UTF-8 -Xms10M -Xmx10M
810325
java.lang.OutOfMemoryError: Java heap space
-Dfile.encoding=UTF-8 -Xms20M -Xmx20M
1823230
java.lang.OutOfMemoryError: Java heap space
由此可见设置堆内存依次增大,list容量也依次增大
- 解决方法
内存大小: 增加堆内存大小
网友评论