Jvm的基本结构学习笔记

Jvm的基本结构学习笔记

1、  PC寄存器(程序计数器)

2、  方法区

a)        保存装载类的信息

                        i.             类型常量池

                      ii.             字段方法信息

                     iii.             方法字节码

b)        通常也跟永久区关联在一起(通常是代表一个意思)

注:具体存储什么信息根据版本而定

比如string信息1.6在方法区中,1.7在堆中

3、  Java堆

a)        保存对象实例

b)        所有线程共享

c)        GC的主要工作空间

4、  Java栈

a)        线程私有

b)        保存一个方法的局部变量、操作数栈、常量池指针

c)        每个方法创建一个栈帧

d)        局部变量表

                        i.             包括函数参数和局部变量

e)        操作数栈(计算)

f)         栈上分配(方法内部的局部变量资源)

                        i.             小对象

                      ii.             直接在栈上分配,直接回收

                     iii.             大对象或者逃逸对象(多个位置使用)无法在栈上分配

5、  内存模型

a)        主存(存储共享变量)

b)        线程工作内存        

c)        可见性

                        i.             Volatile

                      ii.             Synchronize(unlock之前数据写入主存)

                     iii.             Final(一旦完成其他线程可见)

d)        有序性

                        i.             在线程内操作有序

                      ii.             在线程外观察是无序的(指令重排、主存同步延时)