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

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内存模型
    原文地址: https://blog.csdn.net/oldrat/article/details/5797238
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞