虚拟机
maybe423
这个作者很懒,什么都没留下…
展开
-
java垃圾收集算法
1. 标记-清除算法最基础的收集算法是“标记-清除”(mark-sweep)算法,如同它的名字一样,算法分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象。1) 标记-清除算法的两个阶段(A)标记首先标记出所有需要回收的对象。① 第一次标记在可达性分析后发现对象到GC Roots没有任何引用链相连时,被第一次标记;并且进行一次筛选:此对象是否必要执行...转载 2018-05-22 16:11:25 · 198 阅读 · 0 评论 -
引用计数法和可达性分析算法
一、引用计数法给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器为0的对象就是不能再被使用的。引用计数法实现简单,判定效率也很高,但是它很难解决对象之间相互循环引用的问题。如下代码中 testGC()方法:对象objA和objB都有字段instance,赋值令objA.instance = objB;及objB.instance = o...转载 2018-05-23 10:08:10 · 2451 阅读 · 0 评论 -
强引用、软引用、弱引用、虚引用
无论是通过引用计数法判断对象的引用数量,还是通过可达性分析算法判断对象的引用链是否可达,判断对象是否存活都与“引用”有关。在JDK1.2之后,java对引用的概念进行了扩充,将引用分为强引用、软引用、弱引用、虚引用4种,这4种引用强度依次逐渐减弱。1. 强引用就是指在程序代码之中普遍存在的,类似“Object object = new Object()”这类的引用,只要强引用还在,垃圾收集器永远不...转载 2018-05-23 14:38:56 · 113 阅读 · 0 评论 -
java内存分配与回收策略
java技术体系中所提倡的自动内存管理最终可以归结为自动化地解决了两个问题:给对象分配内存以及回收分配给对象的内存。对象的内存分配,往大方向上讲,就是在堆上分配,对象主要分配在新生代的Eden区上,如果启动了本地线程分配缓冲,将按线程优先在TLAB上分配。少数情况下也可能直接分配在老年代中,分配的规则并不是百分之百固定的,其细节主要取决于当前使用的是哪一种垃圾收集器组合,还有虚拟机中与内存相关的参...转载 2018-05-23 17:32:46 · 446 阅读 · 0 评论 -
虚拟机类加载机制
1. 类加载的时机类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)7个阶段。其中,验证、准备、解析3部分统称为连接(Linking)。加载、验证、准备、解析、初始化和卸载这...转载 2018-05-24 15:02:31 · 162 阅读 · 0 评论