java 内存结构
来源:互联网 发布:ebsco数据库的特点 编辑:程序博客网 时间:2024/06/15 09:06
from: http://yidianfengfan.javaeye.com/blog/803329
1.Heap(堆):实例分配的地方,通过-Xms与-Xmx来设置
2.MethodArea(方法区域):类的信息及静态变量。 对应是Permanet Generation, 通过-XX:PermSize来设置
3.JavaStack(java的栈):虚拟机只会直接对Javastack执行两种操作:以帧为单位的压栈或出栈。通过-Xss来设置, 若不够会抛出StackOverflowError
4.ProgramCounter(程序计数器):每一个线程都有它自己的PC寄存器,也是该线程启动时创建的。PC寄存器的内容总是指向下一条将被执行指令的饿地址,这里的地址可以是一个本地指针,也可以是在方法区中相对应于该方法起始指令的偏移量。
5.Nativemethodstack(本地方法栈):保存native方法进入区域的地址
当中Heap和MethodArea是被所有线程的共享使用的;
而Javastack,Programcounter和Nativemethodstack是以线程为粒度的,每个线程独自拥有自己的部分
二、 内存模型
由以上可以知道java内存分为main memory和线程的Working Memory,就会涉及到这两种内存数据同步以及多个线程操作时数据一致性和可见性的问题。这就不可避免要加锁了,在java中可采用如下的形式:
1. synchronized关键字或使用java.util.concurrent.locks中的锁
2. volatile关键字 Volatile表示的是线程每次操作都是在主内存中进行, 这只能保证其可见性, 而不能保证其的原子性, 要有原子性还得加锁
3. final变量(基本类型,类类型还是可以改值的)
- java内存结构
- java 内存结构
- JAVA程序内存结构
- Java虚拟机内存结构
- Java内存结构
- java内存结构探析
- Java对象内存结构
- Java对象内存结构
- Java对象内存结构
- java内存结构
- java中的内存结构
- java内存结构探析
- JAVA内存结构详解
- Java对象内存结构
- Java对象内存结构
- JAVA程序内存结构
- Java对象内存结构
- java内存结构
- 检测网络连接
- android icu4c sqlite中文笔画排序问题
- Access to the path is denied
- 什么情况需要 if (log.isDebugEnabled())
- c++ 定义函数指针
- java 内存结构
- abap选择屏幕的执行过
- js获取节点
- SendMessage CString
- foreach遍历数组输出数组值
- 连接数据库后需要选择使用的那个数据库
- 给定所需要的序号前缀、数字部分长度、开始数字、序号数量返回一批需要的序号字符串(序号数组)
- 我是程序员
- 网站内容被百度快速收录三个关键