一言以蔽之-Java内存区域

182 阅读1分钟

运行时的区域

Java虚拟机在执行Java程序的过程中,会把它管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途和创建销毁时间。

程序计数器

线程私有,当前线程所执行的字节码行号指示器。唯一不会发生OOM的区域。

Java虚拟机栈

线程私有,存储局部变量表,操作数栈,动态链接,方法出口等信息。

本地方法栈

线程私有,为虚拟机使用到的Native方法服务。

线程共享,存放对象实例。

方法区

线程共享,存储类信息,常量,静态变量。

OOM常见原因

  • 内存空间分配过小

  • 代码bug导致内存泄漏

OOM解决方法

  • 分配合理的内存空间

  • 避免代码bug,比如一次性取出太多数据,或循环创建对象


如果觉得有帮助,就请点个赞鼓励一下吧。

3.png