Java 堆 OutOfMemoryError
Java 堆是用来存储对象实例的, 因此如果我们不断地创建对象, 并且保证 GC Root 和创建的对象之间有可达路径以免对象被垃圾回收, 那么当创建的对象过多时...Java 栈 StackOverflowError
我们知道, JVM 的运行时数据区中有一个叫做 虚拟机栈 的内存区域, 此区域的作用是: 每个方法在执行时都会创建一个栈帧, 用于存储局部变量表, 操作数栈...运行时常量池溢出
在 Java 1.6 以及之前的 HotSpot JVM 版本时, 有永久代的概念, 即 GC 的分代收集机制是扩展至方法区的....我们通过 JDK1.6 编译并运行上面的代码, 会有如下输出:
?
需要注意的是, 如果通过 JDK1.8 来编译运行上面代码的话, 会有如下警告, 并且不会产生任何的异常:
?...此例子的代码部分没有改动, 唯一的区别是我们需要使用 JDK8 来运行这段代码, 并且设着参数 -XX:MaxMetaspaceSize=10M, 这个参数告诉 JVM Metaspace 的最大大小是