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 的内存模型
可见性
重排序
指令重排
每个线程拥有一个PC寄存器
在线程创建时创建
指向下一条指令的地址
执行本地方法时,PC的值为undefined
2,方法区
保存装载的类信息
类型的常量池
字段,方法信息
方法字节码
通常和永久区关联在一起
* JDK 6时,String 等常量信息置于方法区,JDK7时,已经移到了 堆
3,JAVA堆
和程序开发密切相关
应用系统对象都保存在堆中
所有线程共享JAVA堆
对分代GC来说,堆也是分代的
GC 的主要工作区间
|————————————————- |
| eden | s0 | s1 | tenured |
|___________________________|
4, JAVA 栈
线程私有的
栈由一系列帧组成(JAVA 栈也叫帧栈)
帧保存一个方法的局部变量,操作数栈,常量池指针
每一次方法调用创建一个帧,并压栈
局部变量在栈上分配,栈上分配不可能出现内存泄漏
java 中的栈上分配
逃逸指的是 栈是线程私有的, 是否能被其他的线程引用
Java 的内存模型
可见性
重排序
指令重排
相关文章推荐
- 仿QQ获取手机中的APK并分享
- ReentrantLock实现原理分析
- java的Arrays类的应用
- synchronized 实现原理分析
- LeetCode 289. Game of Life
- 【BZOJ1433】【codevs2347】假期的宿舍,最大流
- 集合与数组之间的转化
- swift post json and header
- 【Baltic2014】【BZOJ3917】Sequence
- 机械大楼电梯控制项目软件 -- 硬件相关变量定义
- Tomcat热部署方法(3种)
- LeetCode 203. Remove Linked List Elements(删除链表元素)
- OSChina 周三乱弹 ——所有树都绿了,却不知道谁干的!
- 如何将Tomcat加入到系统服务里面
- gcc入门
- Android中的ClassLoader与dex文件加密实现分析
- 实现CSS等分布局的5种方式
- 字符串相等判断
- Smalidea+IntelliJ IDEA/Android Studio动态调试安卓app教程
- C#中Split用法