每一个线程拥有一个PC寄存器,在线程建立的时候建立,pc寄存器老是指向下一条指令的地址,这样程序就知道下一步该干什么。在执行本地方法的时候,PC的值就是 undefined
复制代码
保存装载的类信息多线程
类型的常量池函数
字段,方法信息性能
方法字节码 一般和永久区(Perm)关联在一块儿spa
注:JDK6时,String等常量信息置于方法区,JDK7的时候,已经移动到了堆
方法区中保存的类信息有可能会改变,好比热加载。可是与应用层面的信息相比来讲是稳定的,因此方法区能够成为永久区,永久区并不表明就永久不变。
复制代码
Java栈 – 局部变量 包含参数和局部变量 线程
Java栈 – 操做数栈3d
Java中没有寄存器,全部参数传递使用操做数栈
复制代码
Java栈 – 栈上分配指针
注 Java栈-栈上分配
小对象(通常几十个bytes),在没有逃逸的状况下,能够直接分配在栈上,逃逸状况是另外一个线程中也是用到该对象
直接分配在栈上,能够自动回收,减轻GC的压力
大对象或者逃逸的对象没法栈上分配
复制代码
Java栈 -栈、堆、方法区交互code
可见性:一个线程修改了变量,其余线程能够当即知道cdn
保证可见性的方法对象
有序性
指令重排
线程内串行语义
指令重排的基本原则