每一個線程擁有一個PC寄存器,在線程建立的時候建立,pc寄存器老是指向下一條指令的地址,這樣程序就知道下一步該幹什麼。在執行本地方法的時候,PC的值就是 undefined
複製代碼
保存裝載的類信息多線程
類型的常量池函數
字段,方法信息性能
方法字節碼 一般和永久區(Perm)關聯在一塊兒spa
注:JDK6時,String等常量信息置於方法區,JDK7的時候,已經移動到了堆
方法區中保存的類信息有可能會改變,好比熱加載。可是與應用層面的信息相比來講是穩定的,因此方法區能夠成爲永久區,永久區並不表明就永久不變。
複製代碼
Java棧 – 局部變量 包含參數和局部變量 線程
Java棧 – 操做數棧3d
Java中沒有寄存器,全部參數傳遞使用操做數棧
複製代碼
Java棧 – 棧上分配指針
注 Java棧-棧上分配
小對象(通常幾十個bytes),在沒有逃逸的狀況下,能夠直接分配在棧上,逃逸狀況是另外一個線程中也是用到該對象
直接分配在棧上,能夠自動回收,減輕GC的壓力
大對象或者逃逸的對象沒法棧上分配
複製代碼
Java棧 -棧、堆、方法區交互code
可見性:一個線程修改了變量,其餘線程能夠當即知道cdn
保證可見性的方法對象
有序性
指令重排
線程內串行語義
指令重排的基本原則