知识大全 Java内存结构与模型
Posted 知
篇首语:生活就像海洋,只有意志坚强的人,才能到达彼岸。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java内存结构与模型相关的知识,希望对你有一定的参考价值。
Java内存结构与模型 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
一 java内存结构
Heap(堆) 实例分配的地方 通过 Xms与 Xmx来设置
MethodArea(方法区域) 类的信息及静态变量 对应是Permanet Generation 通过 XX PermSize来设置
JavaStack(java的栈) 虚拟机只会直接对Javastack执行两种操作 以帧为单位的压栈或出栈 通过 Xss来设置 若不够会抛出StackOverflowError
ProgramCounter(程序计数器) 每一个线程都有它自己的PC寄存器 也是该线程启动时创建的 PC寄存器的内容总是指向下一条将被执行指令的饿地址 这里的地址可以是一个本地指针 也可以是在方法区中相对应于该方法起始指令的偏移量
Nativemethodstack(本地方法栈) 保存native方法进入区域的地址
当中Heap和MethodArea是被所有线程的共享使用的
而Javastack Programcounter和Nativemethodstack是以线程为粒度的 每个线程独自拥有自己的部分
二 内存模型
由以上可以知道java内存分为main memory和线程的Working Memory 就会涉及到这两种内存数据同步以及多个线程操作时数据一致性和可见性的问题 这就不可避免要加锁了 在java中可采用如下的形式
synchronized关键字或使用ncurrent locks中的锁
volatile关键字 Volatile表示的是线程每次操作都是在主内存中进行 这只能保证其可见性 而不能保证其的原子性 要有原子性还得加锁
final变量(基本类型 类类型还是可以改值的)
三 如何保证线程安全
每个线程只操作自有的数据 这个可能性要小
设计的类无数据成员 也就没有共享变量 要有可用是 final或volatile
cha138/Article/program/Java/hx/201311/26489相关参考
JVM内存模型及垃圾收集策略解析(2) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 二JAVA
Java内存泄漏分析与解决方案 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Java内存泄漏是
Java垃圾收集算法与内存泄露 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 垃圾收集算法的核心
JVM运行时内存空间结构 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! JVM执行Java程序的
JAVA的安全结构 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! JAVA的安全模型不同于传统的
ArrayList就是传说中的动态数组就是Array的复杂版本它提供了如下一些好处动态的增加和减少元素灵活的设置数组的大小…… 认真阅读本文我相信一定会对你有帮助比如为什么ArrayList里面
JVM内存模型及垃圾收集策略解析(1) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一JVM内
①a螺旋-转角-a螺旋模式:蛋白质形成对称的同型二聚体,每个单位由20个氨基酸的小肽组成,两个a螺旋相互连接成β转角。羧基端的a螺旋负责识别DNA大沟的特异碱基信息,另一个螺旋与磷酸戊糖链骨架接触。
深入Java核心Java内存分配原理精讲 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Java
java语言与c++相比,有哪些优点?主要是这两种开发者对内存地址变量的不同理解,使两种语言在编程的思维上有所差异。C中存在指针变量,而且每个指针对应着一个真实的物理内存地址,他可以对相应地址中的内存