运行时数据区域 |
线程私有(随用户线程的启动和结束而建立和销毁)或所有线程共享(随虚拟机进程的启动而存在) |
抛出的异常 |
备注 |
程序计数器(Program Counter Register) |
线程私有 |
唯一不抛出 OutOfMemoryError 异常的区域 |
|
虚拟机栈(VM Stack) |
线程私有 |
会抛出 StackOverflowError、OutOfMemoryError |
|
本地方法栈(Native Method Stack) |
线程私有 |
会抛出 StackOverflowError、OutOfMemoryError |
|
堆(Heap) |
所有线程共享 |
会抛出 OutOfMemoryError |
通过 -Xmx 和 -Xms 设置堆大小 |
方法区(Method Area) |
所有线程共享 |
会抛出 OutOfMemoryError |
运行时常量池(Runtime Constant Pool)是方法区的一部分,受到方法区内存的限制。 |
直接内存(Direct Memory) |
所有线程共享 |
会抛出 OutOfMemoryError |
本机直接内存 |
图示:
参考:https://mp.weixin.qq.com/s/mehFhIR2ne3Tnl7RlBNuhA