【Java并发编程】Java内存模型
Java内存模型 一、JMM解析 之前写过一篇文章【Java核心技术卷】谈谈对Java平台的理解,其中讨论“Java跨平台”的篇幅占了大半的位置,JVM的重要性不言而喻。 为了能够屏蔽各种硬件以及对操作系统的内存访问的差异,而且要能使得Java程序在各个平台下都能达到一致的并发效果。JVM规范中定义了Java的内存模型(Java Memory model, JMM)。 JMM是一种规范,它规范了JVM与计算机内存是如何协同工作的,规定了一个线程如何以及何时看到其他线程修改过的共享变量的值以及在必须时如何同步地访问到共享变量。 下面我们来认识认识JMM,首先看一下规范下的JVM的内存分配。Heap为堆,Stack 为栈。 堆是一个运行时的数据区,也是Java的垃圾回收器重点关注的对象。堆的优势在于可以动态分配内存的大小,缺点是因为是运行时动态分配内存,存取速度要慢一点。 栈的优势存取的速度比堆要快,但是比计算机的寄存器要慢哈,栈的数据是可以共享的,但是存在栈中的数据的大小与生存期是确定的,灵活性较低,栈中主要存放一些基本类型的变量。比如int,short,long,byte,对象句柄等。...

