java运行时数据区分为虚拟机管理生死和线程绑定两类数据区
1.虚拟机负责创建销毁
1.1堆区域
存放类实例对象和数组,垃圾回收发生的区域,另外方法区在逻辑上也属于这个区域
1.2方法区
保存类结构信息如运行时常量池,属性,方法信息,方法和构造器的代码,用于类、实例、接口初始化的特殊方法信息
1.3运行时常量区
包含几种常量,从编译时已知的数字文本到运行时解析的方法和字段引用。
2.随线程创建销毁
2.1pc寄存器
每个线程都有,包含虚拟机当前执行的方法的指令的地址,native方法则未定义
2.2java 虚拟机栈
包含栈帧,存放本地变量和部分结果,栈帧可能被分配到堆中,栈的大小可以时固定或者动态增减,固定情况下可能会有StackOverFlowError,动态则是OutOfMemoryError
2.3本地方法栈
主要是用于支持本地(native)方法,不支持本地方法的虚拟机不需要提供本地放发栈。本地方法栈可能采用“cstacks”,栈的大小可以时固定或者动态增减,固定情况下可能会有StackOverFlowError,动态则是OutOfMemoryError。
网友评论