Java 虚拟机的内存空间主要分为五个部分:

  1. 程序计数器:记录线程执行的字节码指令位置,线程私有。

  2. Java 虚拟机栈:存储方法执行的局部变量、操作数栈等信息,线程私有。

  3. 本地方法栈:为虚拟机使用到的本地方法服务,线程私有。

  4. :存储所有对象实例和数组,线程共享,由垃圾回收器自动管理内存。

  5. 方法区:存储类信息、常量、静态变量以及编译后的代码,线程共享,内存回收效率较低。