Java虚拟机学习笔记1-内存区域
2013-08-11 15:49
99 查看
1.方法区:(非堆区)存储类信息(版本,字段,方法,接口,常量(类加载后存储在运行时常量池中),静态变量),即时编译器编译后的代码
运行时常量池:存储常量信息,主要是这个东东具有动态性,即在程序运行期间可以动态往里面插入常量。比如String类的intern函数。
2.堆:存储对象,数组
3.虚拟机栈:存储栈帧
栈帧:每call一个方法,就创建一个栈帧,里面包含局部变量表,操作栈,动态链接,方法出口等信息
局部变量表:存储基本数据类型(int,long,double...),对象引用reference,returnAddress类型。64位点long和double占用两个slot,其余均只占用一个slot。
对象引用:有句柄实现方式和直接指针实现方式。
句柄实现方式:reference指向java堆中的句柄池,每个对象的句柄包含两个指针(指向java堆中实例池中的对象实例以及指向方法区中的对象类型)。
优点:当垃圾收集时,移动对象只涉及修改句柄指针,reference不用修改
直接指针实现方式:reference指向java堆中的对象,对象包含实例数据以及一个指向方法区中对象类型点指针。
优点:访问对象实例速度快,相比句柄,少了一次指针定位。
4.本地方法栈:用于调用本地方法存储相关信息。在sun的hotspot虚拟机中,虚拟机栈和本地方法栈合二为一共用虚拟机栈。
5.程序计数器:字面意思,占用很小的一点点内存。
6.直接内存:虚拟机以外的内存,通过调用本地方法申请。
相关文章推荐
- Java虚拟机内存区域---学习笔记
- java虚拟机学习笔记1-----java内存区域
- 【学习笔记】Java虚拟机(二)内存区域与内存溢出
- Java虚拟机学习笔记(一)——Java内存区域及内存溢出异常
- Java学习之【深入理解Java虚拟机---Java内存区域】
- JAVA学习笔记(1)-《深入理解Java虚拟机》之JAVA内存区域
- 《深入理解Java虚拟机》学习笔记-- Java内存区域
- java虚拟机学习笔记_第一部分内存管理机制
- 【Java学习笔记】Day 4-2 Static 关键字及Java内存区域
- 《深入理解Java虚拟机》笔记 第二章 Java虚拟机内存区域
- JVM学习笔记-jvm内存区域模型
- 【学习笔记】Java虚拟机(七)内存调优分析
- JVM学习笔记-运行时内存区域
- jvm笔记一(java虚拟机和java内存区域)
- Java学习笔记47:Java 内存区域
- java虚拟机学习之(一)java内存区域
- 深入理解Java虚拟机—学习笔记(1)Java内存区域与内存溢出异常
- 【学习笔记】Java虚拟机(六)内存分配与回收策略
- 深入理解java虚拟机学习 笔记 第二章 java 内存区域和内存溢出异常
- java虚拟机学习(一) 内存区域