您的位置:首页 > 其它

JVM

2016-05-04 07:45 330 查看
1, PC寄存器

每个线程拥有一个PC寄存器

在线程创建时创建

指向下一条指令的地址

执行本地方法时,PC的值为undefined

2,方法区

保存装载的类信息

类型的常量池

字段,方法信息

    方法字节码

通常和永久区关联在一起

* JDK 6时,String 等常量信息置于方法区,JDK7时,已经移到了 堆

3,JAVA堆

和程序开发密切相关

应用系统对象都保存在堆中

所有线程共享JAVA堆

对分代GC来说,堆也是分代的

GC 的主要工作区间

  

|————————————————- |

| eden | s0 | s1 | tenured |

|___________________________|

4, JAVA 栈

线程私有的

栈由一系列帧组成(JAVA 栈也叫帧栈)

帧保存一个方法的局部变量,操作数栈,常量池指针

  每一次方法调用创建一个帧,并压栈







局部变量在栈上分配,栈上分配不可能出现内存泄漏



java 中的栈上分配





逃逸指的是 栈是线程私有的, 是否能被其他的线程引用



Java 的内存模型







可见性



重排序



指令重排





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: