- 浏览: 370165 次
- 性别:
- 来自: Alien
最新评论
-
风一样的男人__:
[flash=200,200][url]引用[/url][/f ...
java线程内存模型,线程、工作内存、主内存 -
极乐君:
厉害了,,,请问可以转载到我们专栏吗?会注明来源和地址的~专栏 ...
java线程内存模型,线程、工作内存、主内存 -
zdd001:
Spring 线程池使用 -
zdd001:
Spring 线程池使用 -
u014663756:
看了三行就知道是我想要的!!
java线程内存模型,线程、工作内存、主内存
文章列表
java虚拟机内存模式。栈和堆
- 博客分类:
- JVM虚拟机
深入理解JVM—JVM内存模型
博客分类:
java JVM java 虚拟机
我们知道,计算机CPU和内存的交互是最频繁的,内存是我们的高速缓存区,用户磁盘和CPU的交互,而CPU运转速度越来越快,磁盘远远跟不上CPU的读写速度,才设计了内存,用户缓冲用户IO等待导致CPU的等待成本,但是随着CPU的发展,内存的读写速度也远远跟不上CPU的读写速度,因此,为了解决这一纠纷,CPU厂商在每颗CPU上加入了高速缓存,用来缓解这种症状,因此,现在CPU同内存交互就变成了下面的样子。
< xmlnamespace prefix ="v" ...
Java 运行时环境(JRE)是如何加载类的呢? 这玩意水太深,就谈谈一个类是怎么加载的,jvm是怎么工作的。
JVM启动后有三个基本层次的类加载器,先上图:
其中bootstap classloader 是c++写的,jvm启动后,它加载java环境运行所需要的一些class文件(java.* javax.*等包),例如rt.jar,但还有其他的,大家要想看的话可以测试下看加载了哪些:
Java内存回收 垃圾回收机制
- 博客分类:
- JVM虚拟机
一、内存分配策略
一般内存粗糙的可以分为两块,堆heap空间和栈stack空间。但其实Java内存远比这个复杂,只是堆和栈是最重要的两块。
其中栈,也成为局部变量表,主要存储的是在非static的自动变量、函数参数、表达式的临时结果金额函数返回值。栈是线程私有的,生命周期与线程相同。
而堆heap是内存中最大的一块,为线程共享,JVM启动时创建。主要用于存放new出来的对象以及数组。而JAVA的垃圾回收机制管理的往往也就是这个堆内存,因此也称为GC(Garbage Collection Heap)堆。
此外还有方法区和常量池等内存区域。
二、自动垃圾回收机制
ConcurrentSkipListSet
ConcurrentSkipListSet(在JavaSE 6新增的)提供的功能类似于TreeSet,能够并发的访问有序的set。因为ConcurrentSkipListSet是基于“跳跃列表(skip list)”实现的,只要多个线程没有同时修改集合的同一个部分,那么在正常读、写集合的操作中不会出现竞争现象。
有一个业务需求,需要对用户进行增删查改的操作。
当用户第一次查询时会把所以的数据都从数据库当中查询出来。放入cache当中。
如果有增加时,会把这个新用用户放入并行集合类ConcurrentSkipListSet 当中。
删除时 ...
Amdahl 定律 (阿姆达尔定律)
- 博客分类:
- 并行线程开发
有些问题使用越多的资源就能越快地解决——越多的工人参与收割庄稼,那么就能越快地完成收获。另一些任务根本就是串行化的——增加更多的工人根本不可能提高收割速度。如果我们使用线程的重要原因之一是为了支配多处理器的能力,我们必须保证问题被恰当地进行了并行化的分解,并且我们的程序有效地使用了这种并行的潜能。
大多数并发程序都与农耕有着很多相似之处,由一系列并行和串行化的片断组成。Amdahl定律描述了在一个系统中,基于可并行化和串行化的组件各自所占的比重,程序通过获得额外的计算资源,理论上能够加速多少。如果F是必须串行化执行的比重,那么Amdahl定律告诉我们,在一个N 处理器的机器中,我们最 ...
java线程内存模型,线程、工作内存、主内存
- 博客分类:
- 并行线程开发
java线程内存模型
线程、工作内存、主内存三者之间的交互关系图:
key edeas
所有线程共享主内存
每个线程有自己的工作内存
refreshing local memory to/from main memory must comply to JMM rules
java IO NIO (转)
- 博客分类:
- NIO/SOCKET
(这一个章节将讲到Java里面比较重要的一个章节,这里说一句抱歉,因为最近换工作的原因,一直没有时间继续书写教程,不过接下来我会一直坚持写下去的哈,希望大家能够支持。这个章节主要涉及到常用的文件读写,包 ...
java 内存模型 转
- 博客分类:
- JVM虚拟机
分类: Java系列教程2009-10-13 00:29 8616人阅读 评论(24) 收藏 举报
http://blog.csdn.net/wangwenhui11/article/details/6387898
转自以上地址
(原本准备把内存模型单独放到某一篇文章的某个章节里面讲解,后来查阅了国外很多文档 ...
Java中的线程同步与异步如何理解?
同步和异步最大的区别就在于。一个需要等待,一个不需要等待。
比如广播,就是一个异步例子。发起者不关心接收者的状态。不需要等待接收者的返回信息
电话,就是一个同步 ...
访问者模式,顾名思义使用了这个模式后就可以在不修改已有程序结构的前提下,通过添加额外的“访问者”来完成对已有代码功能的提升。
《设计模式》一书中给出了访问者模式适用的情况:
1) 一个对象结构包含很多类对象,它们有不同的接口,而你想对这些对象实施一些依赖于其具体类的操作。
2) 需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而你想避免让这些操作“污染”这些对象的类。Visitor使得你可以将相关的操作集中起来定义在一个类中。
外部与一个子系统的通信必须通过一个统一的门面(Facade)对象进行,这就是门面模式。
医院的例子
用一个例子进行说明,如果把医院作为一个子系统,按照部门职能,这个系统可以划分为挂号、门诊、划价、化验、收费、取药等。看病的病人要与这些部门打交道,就如同一个子系统的客户端与一个子系统的各个类打交道一样,不是一件容易的事情。
首先病人必须先挂号,然后门诊。如果医生要求化验,病人必须首先划价,然后缴款,才能到化验部门做化验。化验后,再回到门诊室。
解决这种不便的方法便是引进门面模式。可以设置一个接待员的位置,由接待员负责代为挂号、划价、缴费、取药等。这个接待员就是门面模式的体现,病人只接触接待 ...
《深入java虚拟机》读书笔记 转
- 博客分类:
- JVM虚拟机
一、java体系结构
1、java程序设计语言 2、java class 文件格式 3、java 应用编程接口(API) 4、java 虚拟机
a、java虚拟机和API 一起组成一个平台,java虚拟机的任务是装载class文件并且执行其中的字节码。
执行引擎分类 (1) 一次性解释字节码。 (2) 即使编译器(just-in-time compiler) 被执行的字节码会被编译成本地机器代码,编译出的本地机器代码会被 缓存。当方法以后被调用的时候可以重用。
Java程序通过两种方式来访问底层操作系统资源,Java API 和JNI(java native ...
创建型模式
1、FACTORY —追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Fa ...
java内存模型详解
- 博客分类:
- JVM虚拟机
java内存模型详解
内存模型 (memory model) 内存模型描述的是程序中各变量(实例域、静态域和数组元素)之间的关系,以及在实际计算机系统中将变量存储到内存和从内存取出变量这样的低层细节.
不同平台间的处理器架构将直接影响内存模型的结构.
在C或C++中, 可以利用不同操作平台下的内存模型来编写并发程序. 但是, 这带给开发人员的是, 更高的学习成本.相比之下, java利用了自身虚拟机的优势, 使内存模型不束缚于具体的处理器架构, 真正实现了跨平台.(针对hotspot jvm, jrockit等不同的jvm, 内存模型也会不相同)
内存模型的特征: a, Vis ...
Java 并发核心编程(转)
- 博客分类:
- 并行线程开发
Java 并发核心编程(转)
Java 并发核心编程
内容涉及:
1、关于java并发
2、概念
3、保护共享数据
4、并发集合类
5、线程