- 浏览: 108767 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (75)
- JVM (22)
- 数据结构 (11)
- java 基础 (16)
- gc (6)
- jmock (1)
- Google (2)
- MapReduce (1)
- Memory (2)
- 算法 (2)
- cglib (1)
- jdk (3)
- 虚拟机 (3)
- 安全 (2)
- 多线程 (1)
- 工作 (1)
- 生活 (1)
- MongoDB (2)
- Hadoop (4)
- HDFS (2)
- cms (2)
- Spring (1)
- 网络协议 (1)
- GitHub (1)
- MYSQL 调优和使用必读(转) (1)
- 分布式 (2)
- Big Data (0)
- 技术Blog (1)
- Hbase (2)
- Zookeeper (1)
- paper (0)
最新评论
-
lzc_java:
Java线程安全兼谈DCL -
select*from爱:
it's nice
IT业薪水大揭秘
转载自 ---- 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并发编程实践》
第16章 Java存储模型,篇幅很少只有不到30面。
读JMM是为了写多线程,这本书整本都是在说并发编程,很多已经说清了,讲JMM自然可以少些。
非常推荐这本书,面向的是Java5,讲了并发编程的原则、模式和最佳实践。
这本书可以让你对并发编程的能力上一个Level。
如果你没有看过这本书,在并发的认识水平是有鸿沟的。(这句话引用GoF设计模式那本书的评价,呵呵~。)
# 如果你是大牛,请无视上面对本书的评价。
# 精通JVM规范 ,熟悉JVM实现 的大牛,自然是超出了讨论的Level。^_^
# 不过每次都从JVM实现,来指导Java并发编程,开发效率怕是不高,还是很推荐看看这本书。
这本书已经绝版,大家可以在这家Taobao店买到这本书 。
# 我可不是托,呵呵。在这家店买过书,这家的翻印的效果不错,价格也很好。
2. 《深入JVM》
第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搜索页
结果包含了上面列出的内容
2. 其它
Java内存模型与volatile
http://jiangzhengjun.javaeye.com/blog/652532
Java内存模型 的 一个专题
挑些看吧,
http://www.soidc.net/topic/java+%C4%DA%B4%E6%C4%A3%D0%CD
发表评论
-
JVM优化之压缩普通对象指针(CompressedOops)
2013-05-03 11:01 1254通常64位JVM消耗的内存 ... -
JVM优化之调整大内存分页(LargePage)
2013-05-03 10:58 1192转载自 ---- http://kenwublog ... -
JVM优化之逃逸分析(Escape Analysis)
2013-05-03 10:56 1073转载自 ---- http://kenwublog ... -
Java基础 之软引用、弱引用、虚引用 ·[转载]
2012-06-07 18:13 11381、概述 在JDK1.2以前的版本中,当一个对象不 ... -
Java中常用的加密方法(JDK)
2012-03-30 16:35 10930转载自 ---- http://www.iteye.co ... -
java的内存管理
2012-03-29 16:59 1601转载自 ---- http://yangzhiyong77 ... -
java虚拟机常用命令工具(转载)
2012-01-31 16:40 6696转载自 ---- http://learnworld.itey ... -
虚拟机中的锁优化简介(适应性自旋/锁粗化/锁削除/轻量级锁/偏向锁)
2011-10-10 18:07 2172转载自 ---- http://www.iteye.com/t ... -
Java栈与堆
2011-10-10 16:39 864转载自 ---- http://mylir.i ... -
Java内存泄露的理解与解决
2011-10-10 16:38 965转载自 ---- http://henryyang.itey ... -
深入Java,初探JVM
2011-08-23 17:23 816转载自 ---- http://lrysir ... -
深入理解JVM
2011-08-22 18:18 884转载自 ---- http://yanle ... -
JVM问题诊断常用命令:jinfo,jmap,jstack
2011-08-18 11:19 1556转载自 ---- http://singleant.iteye ... -
Java HotSpot 性能引擎架构
2011-08-17 17:04 1037转载自 ---- http://lifethink ... -
Java线程安全兼谈DCL
2011-08-17 17:02 1542转载自 ---- http://www.iteye.com/t ... -
用happen-before规则重新审视DCL
2011-08-17 17:00 823转载自 ---- http://lifethink ... -
CMS gc实践总结(转载)
2011-08-10 15:09 1068首先感谢阿宝 同学的帮助,我才对这个gc算法的调整有 ... -
jvm优化参数整理
2011-08-10 14:47 1419转载自 ---- http://agapple.ite ... -
GC机制小结
2011-08-10 14:07 719转载自 ---- http://zhangjian ... -
排序算法java版(转载)
2011-08-10 14:06 898转载自 ---- http://yiyickf.iteye.c ...
相关推荐
Java内存模型详解JMM Java内存模型(Java Memory Model,JMM)是Java虚拟机(JVM)中的一种内存模型,它描述了程序中各个变量之间的关系,以及在实际计算机系统中将变量存储到内存和从内存中取出变量这样的底层细节...
Java内存模型,简称JMM(Java Memory Model),是Java虚拟机规范中定义的一个抽象概念,它描述了在多线程环境下,如何保证各个线程对共享数据的一致性视图。JMM的主要目标是定义程序中各个变量的访问规则,以及在...
Java内存模型(JMM,Java Memory Model)是Java平台中用于描述如何在多线程环境中管理内存的一套规范。它确保了并发编程时不同线程之间的数据一致性、可见性和原子性,以避免出现数据竞争和其他并发问题。以下是JMM...
Java内存模型,简称JMM(Java Memory Model),是Java编程语言规范的一部分,它定义了程序中各个线程如何访问和修改共享变量,以及如何确保数据的一致性。深入理解Java内存模型对于编写高效的并发程序至关重要。本文...
在深入理解Java内存模型之前,我们需要先了解并发编程模型的分类,然后掌握Java内存模型的基础知识,理解重排序和顺序一致性,以及volatile关键字的相关知识点。 首先,让我们探讨Java内存模型的基础知识。在并发...
Java内存模型,简称JMM(Java Memory Model),是Java编程语言规范的一部分,它定义了线程如何共享和访问内存,以及在多线程环境中如何保证数据一致性。理解JMM对于编写高效、正确且线程安全的Java代码至关重要。 ...
Java内存模型(Java Memory Model,简称JMM)是Java并发编程中的核心概念,它定义了Java程序中多线程间共享变量的访问规则。理解JMM对于编写正确、高效的并发程序至关重要。本文将深入探讨JMM的原理、特性以及如何在...
Java 内存模型(Java Memory Model,简称 JMM)是 Java 平台中关于线程如何访问共享变量的一套规则,它定义了线程之间的内存可见性、数据一致性以及指令重排序等关键概念,对于多线程编程和并发性能优化至关重要。...
Java内存模型,简称JMM(Java Memory Model),是Java编程语言规范的一部分,它定义了线程如何共享和访问内存,以及在并发编程中如何处理数据一致性的问题。理解JMM对于编写高效、线程安全的Java代码至关重要。 1. ...
Java内存模型(Java Memory Model,简称JMM)作为Java并发机制的核心,其设计理念直接影响到程序的性能与可靠性。本文将探讨Java内存模型从早期版本到JDK 5的重大变革,并重点介绍这一变迁背后的动机及其对Java开发...
Java内存模型(Java Memory Model,JMM)是Java平台中非常关键的概念,它定义了线程如何共享和访问内存中的数据,以及在多线程环境下如何保证数据的一致性。这本书"深入理解Java内存模型"显然是为了帮助读者深入探讨...
Java内存模型(Java Memory Model,简称JMM)是Java虚拟机(JVM)规范中定义的一种内存模型,它涉及了线程之间共享变量的可见性问题。在并发编程中,理解Java内存模型对于编写正确的多线程程序至关重要。 首先,...
Java内存模型(JMM)是Java虚拟机(JVM)的一部分,它定义了程序中不同变量如何交互,特别是在多线程环境下。JMM确保了在各种硬件和操作系统平台上,Java程序的行为具有一致性和可预测性。Java内存模型的主要目标是...
Java线程之间的通信由Java内存模型(本文简称为JMM)控制,JMM决定一个线程对共享变量的写入何时对另一个线程可见。从抽象的角度来看,JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存(main ...
Java内存模型(Java Memory Model, JMM)是Java虚拟机(JVM)的一部分,用于规定程序中的各种变量(包括实例字段、静态字段和数组元素等)在多个线程共享内存中的读写行为。JMM的主要目的是确保所有线程能够看到一致...
Java 内存模型(JMM)是Java虚拟机(JVM)规范中的一部分,它旨在确保多线程环境下,程序的正确性和可预测性。JMM处理的主要问题是内存的可见性和一致性,它定义了线程如何与主内存交互以及如何共享变量。 在计算机...
Java内存模型(JVM Memory Model,简称JMM)是Java平台中的一个重要概念,它定义了程序中各个变量的访问规则,以及在多线程环境下的内存一致性效果。JMM主要解决的是并发环境下不同线程之间如何共享数据以及如何保证...
近期,在诚信通开源研究小组的专题学习分享会上,我们针对Java内存模型(JMM)进行了深入探讨,现将JMM相关的一些核心概念进行梳理,以便更好地理解和把握JMM的基本原理。 #### 第一问:JMM是干什么的? JMM (Java ...