
JVM
文章平均质量分 81
一杯苦茶
123
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
深入探讨 Java 类加载器
地址:http://www.ibm.com/developerworks/cn/java/j-lo-classloader/类加载器(class loader)是 Java™中的一个很重要的概念。类加载器负责加载 Java 类的字节代码到 Java 虚拟机中。本文首先详细介绍了 Java 类加载器的基本概念,包括代理模式、加载类的具体过程和线程上下文类加载器等,接着介绍如何开发自己的类加载原创 2015-02-02 15:18:52 · 504 阅读 · 0 评论 -
Java内存模型深度解析:重排序
码农网:http://www.codeceo.com/article/java-memeory-2.html数据依赖性如果两个操作访问同一个变量,且这两个操作中有一个为写操作,此时这两个操作之间就存在数据依赖性。数据依赖分下列三种类型:名称代码示例说明写后读a = 1;b = a;写一个变量之后,再读这个位翻译 2015-01-18 22:06:28 · 653 阅读 · 0 评论 -
Java内存模型深度解析:总结
处理器内存模型顺序一致性内存模型是一个理论参考模型,JMM和处理器内存模型在设计时通常会把顺序一致性内存模型作为参照。JMM和处理器内存模型在设计时会对顺序一致性模型做一些放松,因为如果完全按照顺序一致性模型来实现处理器和JMM,那么很多的处理器和编译器优化都要被禁止,这对执行性能将会有很大的影响。根据对不同类型读/写操作组合的执行顺序的放松,可以把常见处理器的内存模型划分为下面几翻译 2015-01-18 22:01:22 · 479 阅读 · 0 评论 -
Java内存模型深度解析:final
与前面介绍的锁和volatile相比较,对final域的读和写更像是普通的变量访问。对于final域,编译器和处理器要遵守两个重排序规则:在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序。初次读一个包含final域的对象的引用,与随后初次读这个final域,这两个操作之间不能重排序。下面,我们通过一些示例性的代码来分别说翻译 2015-01-18 22:02:56 · 553 阅读 · 0 评论 -
Java内存模型深度解析:基础部分
码农网:http://www.codeceo.com/article/java-memory-1.html并发编程模型的分类在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。在共享内存的并发模型里,线程之间翻译 2015-01-18 22:07:46 · 589 阅读 · 0 评论 -
GC垃圾回收
JVM的GC机制 内存作为系统中重要的资源,对系统的稳定运行和高效运行起到了关键作用。虽然Java和C之类的语言不同,不需要开发人员来分配内存和回收内存,而是由JVM来管理对象内存的分配以及回收(又称垃圾回收,GC),对开发人员来说确实大大降低了编写程序的难度,但是它也带来了一个副作用。就是当系统运行过程中出现JVM抛出内存异常(例如OutOfMemoryError)的时候,很难知道原因是原创 2015-01-19 17:29:30 · 1369 阅读 · 0 评论 -
Java堆内存的10个要点
Java 中的堆空间是什么?当 Java 程序开始运行时,JVM 会从操作系统获取一些内存。JVM 使用这些内存,这些内存的一部分就是堆内存。堆内存通常在存储地址的底层,向上排列。当一个对象通过 new 关键字或通过其他方式创建后,对象从堆中获得内存。当对象不再使用了,被当做垃圾回收掉后,这些内存又重新回到堆内存中。要学习垃圾回收,请阅读”Java 中垃圾回收的工作原理”。如何增加翻译 2015-01-23 09:02:07 · 515 阅读 · 0 评论 -
Java内存模型深度解析:volatile
码农网:http://www.codeceo.com/article/java-memory-4.htmlvolatile的特性当我们声明共享变量为volatile后,对这个变量的读/写将会很特别。理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是使用同一个监视器锁对这些单个读/写操作做了同步。下面我们通过具体的示例来说明,请看下面的示例代翻译 2015-01-18 22:05:07 · 601 阅读 · 0 评论 -
Java内存模型深度解析:顺序一致性
码农网:http://www.codeceo.com/article/java-memory-3.html数据竞争与顺序一致性保证当程序未正确同步时,就会存在数据竞争。java内存模型规范对数据竞争的定义如下:在一个线程中写一个变量,在另一个线程读同一个变量,而且写和读没有通过同步来排序。当代码中包含数据竞争时,程序的执行往往产生违反直觉的结果(前一章的示例翻译 2015-01-18 22:05:59 · 668 阅读 · 0 评论 -
Java内存管理(一)--内存分区
出处:http://blog.sina.com.cn/s/blog_7d0e75ab01016vio.html Java提供的内存管理机制是一把双刃剑。好处是java虚拟机帮你完成了几乎所有内存管理的工作,你可以不用再去为每个new对象操作来施放内存。弊端是你将几乎不再拥有对象内存管理的权限(因为你不用做这些工作),长此以往我们就淡漠了java虚拟机管理内存的机制,而 导致我们遇到一些内存泄露转载 2015-01-18 22:18:05 · 808 阅读 · 0 评论 -
GC(Garbage Collection) 垃圾收集
GC(Garbage Collection) 垃圾收集 在堆中,垃圾收集器在对堆进行回收前,第一件事情就是要确定这些对象有哪些还“存活”着,哪些已经“死去” 1、引用计数算法: 给对象中添加一个引用计算器,每当有一个地方引用它时,计算器值就加1;当引用失效时,计数器就减1; 任何时刻计数器都为0的对象就是不可能再被使用的。原创 2015-01-19 17:28:19 · 912 阅读 · 0 评论 -
JVM学习 - 体系结构 内存模型
地址:http://www.open-open.com/lib/view/open1348919888275.html一:Java技术体系模块图二:JVM内存区域模型1.方法区也称"永久代” 、“非堆”, 它用于存储虚拟机加载的类信息、常量、静态变量、是各个线程共享的内存区域。默认最小值为16MB,最大值为64MB,可以通过原创 2015-01-23 08:38:43 · 523 阅读 · 0 评论