JVM
介绍JVM相关技术
努力更文的小白
从事Java后端,小白一枚,还请各位前辈多多指教
展开
-
对象的finalization机制
对象的finalization机制1.Java提供了对象终止(finalization)机制来允许开发人员提供对象销毁之前的自定义处理逻辑。当垃圾收集器发现没有引用指向一个对象,即:垃圾回收此对象之前,总会先调用这个对象的finaliza()方法。finaliza()方法以内需在子类中被重写,用于在对象被回收之时进行资源的释放,通常在这个方法中进行一些资源释放和清理工作,比如关闭文件、套接字和数据库连接等。2.永远不要主动调用某个对象的finalize()方法,应该交给回收机制调用,理由包括下面三点:原创 2020-11-23 23:00:09 · 121 阅读 · 0 评论 -
垃圾标记阶段算法之可达性分析算法
可达性分析(或根搜索算法、追踪性垃圾收集)可达性分析概述相对于引用计数算法而言,可达性分析算法不仅同样具备实现简单和执行高效率的特点,更重要的是**该算法可以有效地解决在引用计数算法中循环引用的问题,防止内存泄漏的发生。**相较于引用计数算法,这里的可达性分析就是Java、C#选择的,这种类型的垃圾收集通常也叫做追踪性垃圾回收。基本思路1.可达性分析算法是以跟对象集合(GC Roots)为起始点,按照从上到下的方式搜索根对象集合所连接的目标对象是否可达。2.使用可达性分析算法后,内存中的存活对象都原创 2020-11-22 00:14:03 · 358 阅读 · 0 评论 -
垃圾标记阶段算法之引用计数算法
垃圾标记阶段:对象存活判断我们清楚在堆中存放着几乎所有的Java对象实例,在GC执行垃圾回收之前,首先需要区分出内存中哪些是存活对象,哪些是已经死亡的对象,只有被标记为已经死亡的对象,GC才会在执行垃圾回收时,释放掉其占用的内存空间,因此这个过程我们可以称为垃圾标记阶段。那么在JVM中究竟是如何标记一个死亡对象?简单来说,当一个对象已经不再被任何的存活对象继续引用时,就可以宣判为已经死亡。判断对象存货一般有两种方式:引用计数算法和可达性分析算法。引用计数算法引用计数算法比较简单,对每一个对象保存一个原创 2020-11-21 18:06:34 · 111 阅读 · 0 评论 -
经典垃圾收集器之ParNew
经典垃圾收集器之ParNew一、ParNew收集器介绍如果说Serial GC是年轻代中的单线程垃圾收集器,那么ParNew收集器则是Serial收集器的多线程版本。Par是Parallel的缩写,New:只能处理的是新生代。ParNew收集器除了采用并行回收的方式回收内存外,两款垃圾收集器之间几乎没有任何区别,ParNew收集器在年轻代中同样使用复制算法、"Stop-the-World"机制。ParNew是很多JVM运行在Server模式下新生代的默认垃圾收集器。1.对于新生代,回收次数频繁,使用原创 2020-11-14 00:19:08 · 4102 阅读 · 0 评论 -
经典垃圾收集器之Serial回收器
Serial回收器一、串行回收Serial收集器是最基本、历史悠久的垃圾收集器了,JDK1.3之前回收新生代唯一的选择。Serial收集器作为HotSpot中Client模式下的默认新生代垃圾收集器。Serial收集器采用复制算法、串行回收和"Stop-the World"机制的方式执行内存回收。除了年轻代之外,Serial收集器还提供用于执行老年代垃圾收集的Seral Old收集器,Serial Old收集器同样也采用了串行回收和"Stop-the-World"机制,只不过内存回收算法使用的是“标记-原创 2020-11-13 00:11:12 · 629 阅读 · 0 评论