(1)方法区用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。永久代。线程共享。
(2)堆存放对象实例。被称为“GC堆”。从内存回收角度看,收集器基本采用分代收集算法,所以JAVA堆还可细分为:新生代和老年代;Eden空间、From Survivor空间、To Survivor空间。线程共享。
(3)虚拟机栈线程私有,用于存储局部表量表、操作栈、动态链接、方法出口等信息。
局部表量表存放了基本数据类型(byte、short、int、long、float、double、char、boolean)、对象引用(可能是一个指向对象起始位置的引用指针,也可能指向一个代表对象的句柄)和returnAddress类型(指向一条字节码指令的地址)
(4)本地方法栈和虚拟机栈作用相似,为虚拟机使用到的Native方法服务。
(5)程序计数器的作用可以看做是当前所执行的字节码的行号指示器