最新文章列表

深入理解Java内存模型(六)——final

与前面介绍的锁和volatile相比较,对final域的读和写更像是普通的变量访问。对于final域,编译器和处理器要遵守两个重排序规则: 在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序。 初次读一个包含final域的对象的引用,与随后初次读这个final域,这两个操作之间不能重排序。 下面,我们通过一些示例性的代码来分别说 ...
aoyouzi 评论(0) 有1168人浏览 2014-05-06 13:51

深入理解Java内存模型(五)——锁

锁的释放-获取建立的happens before 关系 锁是java并发编程中最重要的同步机制。锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息。 下面是锁释放-获取的示例代码: class MonitorExample { int a = 0; public synchronized void writer() { //1 ...
aoyouzi 评论(0) 有498人浏览 2014-05-06 13:50

深入理解Java内存模型(四)——volatile

volatile的特性 当我们声明共享变量为volatile后,对这个变量的读/写将会很特别。理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是 ...
aoyouzi 评论(0) 有544人浏览 2014-05-06 13:48

深入理解Java内存模型(三)——顺序一致性

数据竞争与顺序一致性保证 当程序未正确同步时,就会存在数据竞争。java内存模型规范对数据竞争的定义如下: 在一个线程中写一个变量, 在另一个线程读同一个变量, 而且写和读没有通过同步来排序。 当代码中包含数据竞争时,程序的执行往往产生违反直觉的结果(前一章的示例正是如此)。如果一个多线程程序能正确同步,这个程序将是一个没有数据竞争的程序。 JMM对正确同步的多线程程序的内存一致性 ...
aoyouzi 评论(0) 有1079人浏览 2014-05-05 10:23

深入理解Java内存模型(二)——重排序

数据依赖性 如果两个操作访问同一个变量,且这两个操作中有一个为写操作,此时这两个操作之间就存在数据依赖性。数据依赖分下列三种类型: 名称 代码示例 说明 写后读 a = 1;b = a; 写一个变量之后,再读这个位置。 写后写 a = 1;a = 2; 写一个变量之后,再写这个变量。
aoyouzi 评论(0) 有573人浏览 2014-05-05 10:09

深入理解Java内存模型(一)

并发编程模型的分类 在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。 在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信。在消息传递的并发模型里,线程之间没有公共状态,线程之间必须通 ...
aoyouzi 评论(0) 有521人浏览 2014-05-05 10:08

Java内存模型

  本文章节: 1.JMM简介 2.堆和栈 3.本机内存 4.防止内存泄漏   1.JMM简介  i.内存模型概述   Java平台自动集成了线程以及多处理器技术,这种集成程度比Java以前诞生的计算机语言要厉害很多,该语言针对多种异构平台的平台独立性而使用的多线程技术支持也是具有开拓性的一面,有时候在开发Java同步和线程安全要求很严格的程序时,往往容易混淆的一个概念就是内 ...
aoyouzi 评论(0) 有485人浏览 2014-05-04 14:06

<高级-2> java内存模型

抓住4月尾巴:) 前面介绍的所有原则,比如安全发布,同步策略的规范以及一致性等,他们的安全性都来自于JMM(java内存模型, java memory model)。 1.1 什么是内存模型,为什么需要它 假设一个线程为变量aVariable赋值: aVariable = 3; 内存模型需要解决这个问题:在什么条件下,读取aVariable的线程将看到这个值为3?在缺少同步的条件下,会有许多因素 ...
足至迹留 评论(0) 有1722人浏览 2014-04-30 14:46

JAVA 内存模型(二) volatile理解

    volatile 关键字是JAVA虚拟机提供的最轻量级的同步机制,在了解volatile的特性后,会让我们在多线程数据竞争方面更准确的使用。    一、概念解释     一个volatile 变量,具备两种特性,第一是保证此变量多所有线程的可见性,这里的“可见性”是指当一个线程修改了该变量之后,新值对其他线程来说是可以立即得知的,而普通变量做不到,普通变量需要传递和主内存来完成,比 ...
greemranqq 评论(0) 有1646人浏览 2014-02-13 17:07

jvm内存模型

      1、类装载子系统:装载 连接 初始化 2、方法区。被所有线程共享。垃圾收集也会清理方法区中的无用类型对象。        a. 类型信息。类加载器加载类时,从类文件中提取出来:类的完整有效名、父类的完整有效名(interface and java.lang.Object 除外,因为无父类)、类型的修饰、类型直接接口列表
sky425509 评论(0) 有733人浏览 2014-02-11 10:57

<基础-2> 构建线程安全应用程序

上一篇主要介绍了程序,进程,线程的概念和区别,进程的组成。然后是线程的创建和基本控制。接着本篇就介绍下什么是线程安全,怎样去保证线程安全的基本方法。 二、 构建线程安全应用程序 2.1 什么是线程安全性 线程安全很难给出一个准确的定义。大都是从不同的方面进行一个描述。当对一个复杂对象进行某种操作时,从操作开始到操作结束,该对象中间肯定会经历若干个非法的中间状态。能保证多线程在使用该对象时,每个开始 ...
足至迹留 评论(0) 有1667人浏览 2013-09-13 22:58

hotSpot VM 内存堆的两个Servivor区

 今天看了一下 HotSpot JVM (下简称JVM)的内存管理,先来简单说说我的理解吧。   JVM将堆分成了 二个大区  Young 和 Old 如下图:           而Young 区又分为 Eden、Servivor1、Servivor2, 两个Survivor 区相对地作为为From 和 To 逻辑区域, 当Servivor1作为 From 时 , Servivor2 就作为 ...
fengbin2005 评论(0) 有1059人浏览 2013-07-07 22:17

Java 多线程内存模型

Java 多线程内存模型         Java虚拟机规范中试图定义一种Java内存模型(Java Memory Model,JMM)来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的并发效果。在此之前,主流程序怨言(如C/C++等)直接使用物理硬件(或者说操作系统的内存模型),因此,会由于不同的平台上内存模型差异,导致程序在一套平台上并发完成正常,而在另 ...
Turandot 评论(2) 有5339人浏览 2012-10-23 21:23

Java内存模型

本文尽量涵盖所有Java语言可以碰到的和内存相关的内容,同样也会提到一些和内存相关的计算机语言的一些知识,为草案。因为平时开发的时候没有特 ...
iavere 评论(0) 有530人浏览 2012-09-07 11:16

未完 JVM Runtime Data Areas & Java Memory Model | 内存分配模型 & Java数据存储

Java虚拟机内存分配模型 需精读:Chapter 5 of Inside the Java Virtual Machine - The Java Virtual Machine: http://www.artima.com/insidejvm/ed2/jvm2.html引用所有的对象都是分配在heap上的 http://blog.jamesdbloom.com/JVMInternals.ht ...
Wuaner 评论(0) 有1890人浏览 2012-08-31 18:43

Java 内存模型

自己总结的Java内存模型
wangwengcn 评论(2) 有1239人浏览 2012-07-24 19:55

“双重检查锁定被打破”的声明

“双重检查锁定被打破”的声明The "Double-Checked Locking is Broken" Declaration Signed by: David Bacon (IBM Research) Joshua Bloch (Javasoft), Jeff Bogda, Cliff Click (Hotspot JVM project), Paul Haahr, Do ...
pengqb 评论(0) 有1257人浏览 2012-03-30 19:59

最近博客热门TAG

Java(141747) C(73651) C++(68608) SQL(64571) C#(59609) XML(59133) HTML(59043) JavaScript(54918) .net(54785) Web(54513) 工作(54116) Linux(50906) Oracle(49876) 应用服务器(43288) Spring(40812) 编程(39454) Windows(39381) JSP(37542) MySQL(37268) 数据结构(36423)

博客人气排行榜

    博客电子书下载排行

      >>浏览更多下载

      相关资讯

      相关讨论

      Global site tag (gtag.js) - Google Analytics