这一节我们来总结一下JVM垃圾收集器方面的东西。 垃圾回收器 判断对象引用是否失效 对象生存判断算法 引用判断过程 垃圾收集算法简介 垃圾收集器 新生代垃圾收集器 老年代垃圾收集器 新生代和老年代垃圾收集器 垃圾回收器 判断对象引用是否失效 对象生存判断算法 引用计数法 给对象中添加一个引用计数器,
分类:
其他好文 时间:
2016-01-27 18:57:59
阅读次数:
242
堆里面存放着Java世界几乎所有的对象实例,垃圾收集器在对堆进行回收前,第一件事情就是要确定这些对象之中哪些还存活,哪些已经死去。判断对象的生命周期是否结束有以下几种方法
引用计数法
具体操作是给对象添加一个引用计数器,每当有一个地方引用时,计数器的值就加1,;当引用失效时,计数器就减1;任何时刻计数器为0的对象就 是不可能再被使用的。客观的说引用计数器算法实现简单,判定效率也很高,在大部分情况...
分类:
其他好文 时间:
2015-08-18 21:30:33
阅读次数:
231
1.叙述的问题
对象什么时候死亡?
垃圾收集算法
垃圾收集器
内存分配与回收策略2.GC需要完成的三件事:
哪些内存需要回收?
什么时候回收?
怎么回收?1)判断对象死亡的方法:
引用计数器算法:给对象中添加一个计数器,每当有一个地方引用它时,计数器加1;当引用失效时,计数器减1;任何时刻计数器都为0的对象就是不可能再被使用的。
根搜索算法:通过一系列的名为“GC Roots”的对...
分类:
其他好文 时间:
2015-08-16 10:45:40
阅读次数:
102
一、java.lang.ref
java.lang.ref包规范(参看JDK API中所述内容,本文就不贴出来了)有几个点很重要。
1. 这个包中的类使得应用程序可以与JVM垃圾收集器进行一些交互;
2. 引用的可达性逐渐降低:强引用、弱引用、软引用、虚引用;
3. 自动清除引用:只有弱引用和软引用会自动清除引用(这表明虚引用不会自动清除),清除的时机是将引...
分类:
编程语言 时间:
2015-08-15 20:04:03
阅读次数:
3423
1、Serial收集器曾经是虚拟机新生代收集的唯一选择,是一个单线程的收集器,在进行收集垃圾时,必须stop the world,它是虚拟机运行在Client模式下的默认新生代收集器。
2、Serial Old是Serial收集器的老年代版本,同样是单线程收集器,使用标记整理算法。
3、ParNew收集器是Serial收集器的多线程版本,许多运行在Server模式下的虚拟机中首选的新生代收集器...
分类:
编程语言 时间:
2015-07-31 22:03:47
阅读次数:
178
一、类加载器原理
JVM将class文件字节码文件加载到内存中, 并将这些静态数据转换成方法区中的运行时数据结构,在堆中生成一个代表这个类的java.lang.Class
对象,作为方法区类数据的访问入口。
二、类缓存
标准的Java SE类加载器可以按要求查找类,但一旦某个类被加载到类加载器中,它将维持加载(缓存)一段时间。不过,JVM垃圾收集器可以回收这些Class过象。
三...
分类:
其他好文 时间:
2015-07-17 19:00:15
阅读次数:
124
参 数
描 述
UseSerialGC
虚拟机运行在Client 模式下的默认值,打开此开关后,使用Serial +
Serial Old 的收集器组合进行内存回收
UseParNewGC
打开此开关后,使用ParNew + Serial Old 的收集器组合进行内存回收
UseConcMarkS...
分类:
其他好文 时间:
2015-07-03 10:41:32
阅读次数:
168
JVM 垃圾收集对不同类型的引用的有一种不同的方法。java对于它的对象。仅仅存在有引。它会一直存在于内存中。假设越来越多这样的对象,外JVM的内存量。JVM抛出OutOfMemory错。虽然垃圾收集的实施细节JVM控制。发者仍然能够在一定程度上与垃圾回收器进行交互,其目的在于更好的帮助垃圾回收器管...
分类:
编程语言 时间:
2015-06-19 20:03:22
阅读次数:
103
程序计数器、JVM栈、本地方法栈这三个内存区域和线程是一一对应的,并且每一个线程的这三个区域相互独立互不干扰。他们都随着线程的产生而产生,线程的灭亡而灭亡。JVM栈和本地方法栈中的栈帧都随着方法的加载而入栈,随着方法的结束而出栈。栈帧的大小是在程序员写类的时候就确定下来的。因此这三种区域的内存大小都具备确定性,当方法结束或线程结束后,这些内存空间就会自动被回收掉,所以JVM无需考虑这些区域的内存回收...
分类:
其他好文 时间:
2015-05-29 10:11:00
阅读次数:
116
参考文献:深入理解Java虚拟机 周志明 Java编程思想 Bruce Eckel为什么自动化垃圾回收后还要了解GC呢:当需要排查各种溢出、内存泄漏问题时,当垃圾收集成为系统达成更高并发量的瓶颈时,我们就需要对这些“自动化”的技术实施必要的监控和调节。垃圾回收的主要区域:Java堆和方...
分类:
编程语言 时间:
2015-05-13 00:24:34
阅读次数:
266