一、线程内存共享区
1、JAVA堆区(-Xms:起始内存 -Xmx:最大内存)
a、新生代(Young Gen):Eden、From Survivor、To Survivor
b、老年代(Old Gen)
存储:对象实例
实际内存不连续
2、方法区(-XX:Max-PermSize最大内存)
存储:内一个JAVA类的结构信息。运行时常量池、字段和方法数据、构造函数和普通方法的字节码内容以及类、实例、接口初始化时需要用到的特殊方法等数据。
GC默认对针对方法区中的常量池和类型卸载
3、运行时常量池
属于方法区,内存使用大小不能超过方法区
二、线程私有内存区
1、PC寄存器(PC计数器)
2、JAVA栈
JAVA栈用于存储栈帧StackFrame
栈帧中存储局部变量表、操作数栈、方法出口灯信息
3、本地方法栈
用于支持本地方法的执行(native方法,入C/C++编写的方法)
三、性能监控区