Java虚拟机
zw_kk
world beautiful
展开
-
Java虚拟机运行时数据区说明
Java运行时会把管理的内存分为多个不同的数据区。这些区域有不同的用途,以及创建和销毁的时间。如下图所示:原创 2017-03-20 22:35:30 · 339 阅读 · 0 评论 -
Java引用
引用通过上一章讲述了对象是否判断“死亡”算法讲述了对象的一生。但是这里要特别提醒,无论通过“引用计算算法”还是通过“可行性分析算法”,判断对象是否存活都与引用有关系。在JDK1.2之前,定义类是否被引用了是很简单的,就是判断是否有“reference”的存在,如果存在就表示该类被引用着。 但是对于有一些类,虽然他们没有被引用,但是当内存足够时我们还是想把他们保存在虚拟机里,不被GC掉。于是在JDK原创 2017-03-29 08:14:30 · 434 阅读 · 0 评论 -
对象存活判定算法-判断对象是否活着
对象被JVM收集的前提是该对象已经被JVM标记为了“死去”的对象。判断对象是否活着的算法引用计数法引用计数法的基本概念是:给对象添加一个引用计数器,每当有一个地方引用了该对象,计数器就加1;当引用失效,计数器就减1;任何时刻的计数器为0的对象就是不可能在被使用的对象。虽然是一个实现简单有效的算法,但是JVM已经很少使用这种算法了。可行性分析算法现在主流的JVM都是采用“可行性分析”的算法来标记“死去原创 2017-03-28 08:24:06 · 901 阅读 · 0 评论 -
HotSpot垃圾收集算法简介
经过对象存活算法的判定,可以得到一些等待被收集的垃圾对象。而这些对象要用什么方法收集呢?这里也是一个学问,有很多算法可以收集这些对象。下面简单介绍几种收集算法。分代收集思想当前大多数垃圾收集都采用“分代收集”的思想,就是把老年代和新生代分开用不同的算法进行收集。因为新生代每次垃圾收集的时候都会有大量死去的对象,而老年代一般情况都很少死去的对象。所以分代收集是很适合的一种方法。标记-清除算法标记清除算原创 2017-04-09 21:17:31 · 708 阅读 · 0 评论 -
虚拟机创建对象的过程探索
对象的创建Java是面向对象的语言,一般情况下创建对象都是通过new来创建的(少数情况是通过克隆和反射来发生的)。那么虚拟机中,对new创建出来的对象时,是要走什么过程的呢?首先是寻找类类型的过程: 1.到一个地方寻找这个类的符号引用。 2.检查符号引用的对应的类是否已经被加载了、解析、初始化。 3.如果没有加载,就需要经过加载器来加载该类的过程。对象内存细节分布说明接下来是以类为基础创建对象原创 2017-03-24 07:50:00 · 492 阅读 · 0 评论 -
hotspot垃圾收集器简介
简介 如果收集算法是虚拟机收集对象的灵魂,那么垃圾收集器就是对象的实现工具。hotspot虚拟机包含的虚拟机如下图所示:原创 2017-04-21 08:23:42 · 638 阅读 · 0 评论