JVM 运行时数据区一览

分类:JVM

线程私有的区域

线程共享的区域

不属于运行时数据区,但常被问到的:直接内存

NIO 的 DirectByteBuffer 在堆外分配内存,减少了在 Java 堆和本地内存之间来回复制。上限用 -XX:MaxDirectMemorySize 设置。

常见错误对照

错误信息通常的原因
OutOfMemoryError: Java heap space堆太小,或者有内存泄漏
OutOfMemoryError: Metaspace加载的类太多,例如动态生成大量代理类
OutOfMemoryError: Direct buffer memory直接内存用尽,常见于 Netty 等 NIO 应用
StackOverflowError递归过深或栈设置过小