随着VM或线程开始、结束的数据区域。官方文档是http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html#jvms-2.5 (盗用下图)
Program Counter Register,随着线程开始结束。VM运行的方法:
1.非Native方法,持有正在运行操作的内存地址
2.Native方法 ,没指定,但一般均可以持有平台相关的指针。
表示程序现在执行到内存的哪里了。
Java Virtual Machine Stacks,随着线程开始接触,和语言中的Stack结构类似,
StackOVerflowError:大小固定,线程在运算中需要超过被许可的stack大小
OutOfMemoryError: 大小可动态变化,1,但是内存不足,无法满足扩展 2,创建新的线程初始化Stack时内存不足。
功能类比Java Virtual Machine Stacks,只是用于标为Native的方法,就是C的方法。
boolean
, byte
, char
, short
, int
, float
, reference
,
returnAddress
. 占两个存储空间的 long
or double
.,被生成索引排序,从0到size-1(就是array嘛)。reference就是对象实例的引用。随着VM开始结束,内存用于储存所有类的实例(all class instances)和队列。
Heap对象通过GC回收,对象永远不要显式(代码主动的)回收,大小是固定or动态变更,
OutOfMemoryError:如果需要的内存超出了系统允许的会
随着VM开始结束,所有的线程共享。用于存储语言被编译后的代码,或类似操作系统处理的text片段(应该是说字节码的意思吧)。
存储:每个类的的结构——如run-time constant pool(运行时常量池),field(字段,属性),method data,方法和构建方法的代码,包括特殊的类和接口初始化的方法。
尽管Method Area是Heap逻辑上的一部分,但是简单的实现可能选择 不去 GC或压缩改区域。
OutOfMemoryError:同上
是每个类、每个接口在class文件中constant_pool表格的表示。包含常量:编译时期得知的数字和运行时必须要解析的字段引用。Run-Time Constant Pool充当的功能类似于Java语言中字符表(symbol table)。(就是public static final int NUM = 3,private String hello = “hello”,这个NUM和hello符号对应的东西)
每个Run-Time Constant Pool都是Method Area的一部分。当类或接口创建时生成。
OutOfMemoryError:同上
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/zhjali123/article/details/47699323