一、java内存区域划分示意图
图片说明

Java 堆(Java Heap):几乎所有的对象实例和数组都在这里分配内存。Java Heap 是垃圾收集器管理的主要区域,因此很多时候也被称为“GC堆”。

方法区也是各个线程共享的内存区域,它用于存储已经被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。

二、JMM(Java Memory Model)让java程序下的虚拟机栈与计算机内存协同工作,规定了一个线程如何以及何时可以看到其他线程修改过的变量值,以及如何同步访问共享资源。

JMM抽象结构示意图:
图片说明

工作内存 aka 本地内存,是JMM的一种抽象概念,涵盖了CPU寄存器、写缓冲区等的抽象描述,同时存储着读写共享资源的副本

三、内存溢出

参考文章:
https://www.w3cschool.cn/javavm/34g21iih.html
https://zhuanlan.zhihu.com/p/29881777