`

Java内存模型(JMM) 资料整理(转载)

阅读更多

转载自 ---- http://blog.csdn.net/oldrat/article/details/5797238

 

Java内存模型 常常在面试中问到,这一块要好好扫盲一下。

 

内存模型决定了 多线程编程正确性的判定,实用性上也是很值得好好调查一下。

 

这个问题这么重要,要好好了解一下。所谓知者不惑,有了让大家“知”的资料就不怕了。

 

 

〇、术语

1. 内存模式,wikipedia有这个词条

http://en.wikipedia.org/wiki/Memory_model

http://en.wikipedia.org/wiki/Memory_model_%28computing%29

内存模型描述的是 线程如何和内存交互。

 

2. Java内存模式  

http://en.wikipedia.org/wiki/Java_Memory_Model

 

3. C内存模式(Intel内存模式)

http://en.wikipedia.org/wiki/C_memory_model

一、官方一手资料

Java规范中的信息

 

JMM的说明在Java语言规范 中给出了官方说明,在 17.4 Memory Model 一节,

http://java.sun.com/docs/books/jls/third_edition/html/memory.html#17.4

JVM规范 中也有相关的内容,CHAPTER 8 Threads and Locks

http://java.sun.com/docs/books/jvms/second_edition/html/Threads.doc.html

 

规范中会提到Consistency model、Sequential Consistency等概念,参见下面的资料整理

http://blog.csdn.net/oldrat/archive/2010/08/10/5802803.aspx

 

 

二、经典书籍

 -

1. 《Java并发编程实践》

China-pub上的链接

第16章 Java存储模型,篇幅很少只有不到30面。

读JMM是为了写多线程,这本书整本都是在说并发编程,很多已经说清了,讲JMM自然可以少些。

 

非常推荐这本书,面向的是Java5,讲了并发编程的原则、模式和最佳实践。

这本书可以让你对并发编程的能力上一个Level。

如果你没有看过这本书,在并发的认识水平是有鸿沟的。(这句话引用GoF设计模式那本书的评价,呵呵~。)

# 如果你是大牛,请无视上面对本书的评价。

# 精通JVM规范 ,熟悉JVM实现 的大牛,自然是超出了讨论的Level。^_^

# 不过每次都从JVM实现,来指导Java并发编程,开发效率怕是不高,还是很推荐看看这本书。

 

这本书已经绝版,大家可以在这家Taobao店买到这本书

# 我可不是托,呵呵。在这家店买过书,这家的翻印的效果不错,价格也很好。

 


2. 《深入JVM》

China-pub上的链接

第20章 线程同步

第9章 垃圾回收。和JMM不是很相关,但回收的是内存 ,所以也列上了。

 

这本书也绝版,还是那家Taobao店中可以买到这本书

 

-

三、辅助信息

-

1. IBM的developerworks上不错的信息

IBM的developerworks上信息的质量很高,可以好好看一下。

 

Java 理论与实践: 修复 Java 内存模型,第 1 部分

http://www.ibm.com/developerworks/cn/java/j-jtp02244/

 

Java 理论与实践: 修复 Java 内存模型,第 2 部分

http://www.ibm.com/developerworks/cn/java/j-jtp03304/

 

讲了内存模型,更重要的是讲了Java5在内存模型上的修复。这个问题也常常会问到。

 

 

Java 理论与实践: Mustang 中的同步优化  

http://www.ibm.com/developerworks/cn/java/j-jtp10185/

 

Java 理论与实践: JDK 5.0 中更灵活、更具可伸缩性的锁定机制

http://www.ibm.com/developerworks/cn/java/j-jtp10264/

 

 

 

结合安全发布与有效的不可变性来提升性能

http://www.ibm.com/developerworks/cn/java/j-hashmap.html

 

Java 理论与实践: 变还是不变?  

http://www.ibm.com/developerworks/cn/java/j-jtp02183/

 

讲到发布问题,编程实战中的重要问题。

 

Java 理论和实践: 安全构造技术

http://www.ibm.com/developerworks/cn/java/j-jtp0618/

 

 

 

轻松使用线程: 同步不是敌人

http://www.ibm.com/developerworks/cn/java/j-threads/

 

轻松使用线程: 减少争用 

http://www.ibm.com/developerworks/cn/java/j-threads/index2.html

轻松使用线程: 不共享有时是最好的

 

 

http://www.ibm.com/developerworks/cn/java/j-threads/index3.html

 

 

Java 理论与实践: 并发集合类

http://www.ibm.com/developerworks/cn/java/j-jtp07233/


双重检查锁定及单例模式

http://www.ibm.com/developerworks/cn/java/j-dcl.html

 

 

IBM站点上对“Java 内存模型”的Google搜索页

结果包含了上面列出的内容

http://www.google.com.hk/search?hl=zh-CN&safe=strict&q=Java+%E5%86%85%E5%AD%98%E6%A8%A1%E5%9E%8B+site%3Aibm.com&aq=f&aqi=&aql=&oq=&gs_rfai=

 

2. 其它

 

Java内存模型与volatile

http://jiangzhengjun.javaeye.com/blog/652532

 

 

Java内存模型 的 一个专题

挑些看吧,

http://www.soidc.net/topic/java+%C4%DA%B4%E6%C4%A3%D0%CD

分享到:
评论

相关推荐

    Java内存模型详解JMM.docx

    Java内存模型详解JMM Java内存模型(Java Memory Model,JMM)是Java虚拟机(JVM)中的一种内存模型,它描述了程序中各个变量之间的关系,以及在实际计算机系统中将变量存储到内存和从内存中取出变量这样的底层细节...

    深入Java内存模型-JMM

    Java内存模型,简称JMM(Java Memory Model),是Java虚拟机规范中定义的一个抽象概念,它描述了在多线程环境下,如何保证各个线程对共享数据的一致性视图。JMM的主要目标是定义程序中各个变量的访问规则,以及在...

    java内存模型JMM(Java Memory Model)1

    Java内存模型(JMM,Java Memory Model)是Java平台中用于描述如何在多线程环境中管理内存的一套规范。它确保了并发编程时不同线程之间的数据一致性、可见性和原子性,以避免出现数据竞争和其他并发问题。以下是JMM...

    深入理解Java内存模型 pdf 超清版

    Java内存模型,简称JMM(Java Memory Model),是Java编程语言规范的一部分,它定义了程序中各个线程如何访问和修改共享变量,以及如何确保数据的一致性。深入理解Java内存模型对于编写高效的并发程序至关重要。本文...

    深入理解Java内存模型

    在深入理解Java内存模型之前,我们需要先了解并发编程模型的分类,然后掌握Java内存模型的基础知识,理解重排序和顺序一致性,以及volatile关键字的相关知识点。 首先,让我们探讨Java内存模型的基础知识。在并发...

    深入理解 Java 内存模型_程晓明_InfoQ_java_内存模型_

    Java内存模型,简称JMM(Java Memory Model),是Java编程语言规范的一部分,它定义了线程如何共享和访问内存,以及在多线程环境中如何保证数据一致性。理解JMM对于编写高效、正确且线程安全的Java代码至关重要。 ...

    Java内存模型(JMM)深度解析:原理、特性与代码实践

    Java内存模型(Java Memory Model,简称JMM)是Java并发编程中的核心概念,它定义了Java程序中多线程间共享变量的访问规则。理解JMM对于编写正确、高效的并发程序至关重要。本文将深入探讨JMM的原理、特性以及如何在...

    深入理解 Java 内存模型

    Java 内存模型(Java Memory Model,简称 JMM)是 Java 平台中关于线程如何访问共享变量的一套规则,它定义了线程之间的内存可见性、数据一致性以及指令重排序等关键概念,对于多线程编程和并发性能优化至关重要。...

    java内存模型文档

    Java内存模型,简称JMM(Java Memory Model),是Java编程语言规范的一部分,它定义了线程如何共享和访问内存,以及在并发编程中如何处理数据一致性的问题。理解JMM对于编写高效、线程安全的Java代码至关重要。 1. ...

    Java内存模型的历史变迁

    Java内存模型(Java Memory Model,简称JMM)作为Java并发机制的核心,其设计理念直接影响到程序的性能与可靠性。本文将探讨Java内存模型从早期版本到JDK 5的重大变革,并重点介绍这一变迁背后的动机及其对Java开发...

    深入理解java内存模型

    Java内存模型(Java Memory Model,JMM)是Java平台中非常关键的概念,它定义了线程如何共享和访问内存中的数据,以及在多线程环境下如何保证数据的一致性。这本书"深入理解Java内存模型"显然是为了帮助读者深入探讨...

    深度剖析java内存模型

    Java内存模型(Java Memory Model,简称JMM)是Java虚拟机(JVM)规范中定义的一种内存模型,它涉及了线程之间共享变量的可见性问题。在并发编程中,理解Java内存模型对于编写正确的多线程程序至关重要。 首先,...

    java内存模型.pdf

    Java内存模型(JMM)是Java虚拟机(JVM)的一部分,它定义了程序中不同变量如何交互,特别是在多线程环境下。JMM确保了在各种硬件和操作系统平台上,Java程序的行为具有一致性和可预测性。Java内存模型的主要目标是...

    《深入理解JAVA内存模型》PDF

    Java线程之间的通信由Java内存模型(本文简称为JMM)控制,JMM决定一个线程对共享变量的写入何时对另一个线程可见。从抽象的角度来看,JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存(main ...

    Java内存模型详解

    Java内存模型(Java Memory Model, JMM)是Java虚拟机(JVM)的一部分,用于规定程序中的各种变量(包括实例字段、静态字段和数组元素等)在多个线程共享内存中的读写行为。JMM的主要目的是确保所有线程能够看到一致...

    java内存模型(JMM).docx

    Java 内存模型(JMM)是Java虚拟机(JVM)规范中的一部分,它旨在确保多线程环境下,程序的正确性和可预测性。JMM处理的主要问题是内存的可见性和一致性,它定义了线程如何与主内存交互以及如何共享变量。 在计算机...

    java内存模型详解--非常经典

    Java内存模型(JVM Memory Model,简称JMM)是Java平台中的一个重要概念,它定义了程序中各个变量的访问规则,以及在多线程环境下的内存一致性效果。JMM主要解决的是并发环境下不同线程之间如何共享数据以及如何保证...

    三问JMM--有关JVM内存模型的PPT

    近期,在诚信通开源研究小组的专题学习分享会上,我们针对Java内存模型(JMM)进行了深入探讨,现将JMM相关的一些核心概念进行梳理,以便更好地理解和把握JMM的基本原理。 #### 第一问:JMM是干什么的? JMM (Java ...

Global site tag (gtag.js) - Google Analytics