两段代码;
配置vm参数:-Xms1m -Xmx1m -XX:+HeapDumpOnOutOfMemoryError第一段代码:
package com.betterarrow;public class Demo { public static void main(String[] args) {
new Demo().increaseObject();
} public void increaseObject() {
new Demo();
increaseObject();
}
}抛出:Exception in thread "main" java.lang.StackOverflowError第二段代码:
public class HeapOOM {
public static void main(String[] args) {
while (true) {
new HeapOOM();
}
}
}
抛出:java.lang.OutOfMemoryError: Java heap space在我的理解,都是基于堆内存抛出的问题,为什么第一个会是java.lang.StackOverflowError而不是java.lang.OutOfMemoryError呢
配置vm参数:-Xms1m -Xmx1m -XX:+HeapDumpOnOutOfMemoryError第一段代码:
package com.betterarrow;public class Demo { public static void main(String[] args) {
new Demo().increaseObject();
} public void increaseObject() {
new Demo();
increaseObject();
}
}抛出:Exception in thread "main" java.lang.StackOverflowError第二段代码:
public class HeapOOM {
public static void main(String[] args) {
while (true) {
new HeapOOM();
}
}
}
抛出:java.lang.OutOfMemoryError: Java heap space在我的理解,都是基于堆内存抛出的问题,为什么第一个会是java.lang.StackOverflowError而不是java.lang.OutOfMemoryError呢
一张图理解JVM调优
如果点不开的话到java123.vip首页点击文章就能看到。
OutOfMemoryError:JVM空间溢出,创建对象速度高于GC回收速度。并且gc后的空间不足第一个你是自己调自己,把栈调爆了,不是说jvm空间溢出了