`

GC 回收策略

阅读更多

垃圾回收:由JVM自动释放不再被程序所引用的对象,按照特定的算法来实现资源回收。

如何判断一个对象是否生存或者消亡?

首先如果在进行可达性分析之后,那些没有与GC Roots相关联的引用链将会第一次被标记并且进行一次筛选,筛选的条件是是否有必要执行finalize()方法,当对象没有覆盖finalize()或者已经被虚拟机调用过,虚拟机将这两种情况都被视为没有必要执行。

如果这个对象被判定有必要执行finalize方法,那么这个对象将会放置到到一个叫做F-Queue的队列中,并在稍后的由一个虚拟机自动建立的,低优先级的Finalizer的线程去执行。

稍后GC还会对F-queue中的对象进行第二次第二次小规模标记,如果在第一次的时候没有被finalize执行,在那个时候与引用链上任何一对象建立关系,都逃脱了死亡命运,否则第二次就可能真的被回收了。

哪些可以作为GC Roots呢?

1 方法栈中的变量

2 类变量引用的对象

3 常量引用的对象

4 本地方法栈所引用的对象

垃圾手机算法:

标记清除算法:首先标记所有需要回收的对象,然后在标记完成后统一回收所有被标记的对象。

 

复制算法:他将内存容量分为大小相等的两个快,每一次使用其中的一块,当一块内存用完,将还存活的对象复制到另一块上,然后再把已使用的空间一次性清理掉。

这样可以不必考虑碎片等问题。

 

标记整理算法:过程与标记清除差不多,但是后续步骤不是直接对可回收的对象进行整理,而是让所有存货的对象都向一端移动,然后直接就、清理掉端边界以外的内存。

分享到:
评论

相关推荐

    JVM常用的GC策略介绍

    描述了JVM的常用GC算法、GC策略和常用的垃圾回收器,适用于JDK1.7。

    09.内存分配与回收策略1

    1.对象优先分配到Eden区中 1. 新代gc(minorgc):指发在新代的垃圾回收动作,因此java对象多数 2. 对象会直接进年代 3. 期存活的对象进年

    大厂架构师-日均百万订单量的JVM优化与高级GC调优策略实战(5.8G)

    大厂架构师-日均百万订单量的JVM优化与高级GC调优策略实战(5.8G) 〖课程介绍〗: 来自顶尖大厂的架构师级JVM优化与GC调优策略实战课程,是具备有尖端技术的优化课程。在课程内容上几乎不用过多的介绍,单是查阅目录就...

    IBM JDK5垃圾收集策略

    本文描述了几种IBM JDK5的垃圾回收策略,几种策略的特点和原理,对于WAS6.1 GC调优有很大的帮助

    【JavaScript源代码】详解JavaScript的垃圾回收机制.docx

     目录 为什么需要垃圾回收(GC)什么是垃圾回收垃圾产生垃圾回收策略引用计数标记循环引用引发的问题解决方法引用计数算法的优缺点标记清除算法核心思想标记清除算法优缺点标记整理算法V8引擎的垃圾回收回收新生代...

    Jvm1.8_GC.mmap

    年轻代和年老代的GC策略是不一样的,年轻代一般采用的是复制算法。 Minor GC和Major GC的发生时机 Minor GC发生Eden区域被占满时。第一次触发gc时,Eden存活的对象被复制到Survivor Space的To区。每次gc...

    java猜数字源码-Android_Interview:Android面试题

    java猜数字源码 Android面试整理 阿里巴巴 LRUCache原理 答: 图片加载原理 ...GC回收策略 画出 Android 的大体架构图 描述清点击 Android Studio 的 build 按钮后发生了什么 大体说清一个应用程序安

    Android内存回收机制

    Android内存回收机制策略 1、GC 2、lowmemorykiller GC GC是java虚拟机的内存回收机制。Android GC原理探究https://www.jianshu.com/p/a7f31aee4e2e lowmemorykiller lowmemorykiller总结:...

    tomcat垃圾回收配置模版.docx

    tomcat垃圾回收配置模版 G1回收器(Garbage-First) G1回收器拥有独特的垃圾回收策略,回收期间可多线程同时工作. 拥有与应用程序交替执行的能力,部分工作可与应用程序同时执行,在整个GC期间不会完全阻塞应用程序。

    Java垃圾回收知识,垃圾回收资料

    知识点覆盖范围:垃圾回收算法、垃圾收集器、GC原理、垃圾回收的优缺点等。 难度级别:从基础到高级,面试官可能会深入探讨垃圾回收的细节和实现原理。 实践经验:理论知识之外,面试官可能会问到实际场景下的优化...

    【JavaScript源代码】一文带你了解JavaScript垃圾回收机制.docx

    1. 垃圾回收策略 2. 回收新生代对象 3. 回收老生代对象 4. V8垃圾回收总结 10. Performance工具介绍 1. 内存问题的体现 2. 监控内存的几种方式 3. 任务管理器监控内存 4. TimeLine记录内容 5. 堆快照查找分离DOM 6. ...

    【JVM和性能优化】2.垃圾回收器和内存分配策略

    Compact)GC算法综合用年轻代老年代永久代枚举根节点安全点安全区域GC回收器Serial 收集器ParNew 收集器Parallel Scavenge 收集器Serial Old 收集器Parallel Old 收集器CMS 收集器G1 收集器ZGCSTW实现内存分配与回收...

    性能瓶颈分析及案例总结

    2 性能分析步骤 211 确定应用类型 ...410 CMS 回收是否等于 FULL GC? 411 判断 FULL GC 是否正常的标准 412 FULL GC 出现的几种情况 413 CMS 常用参数 414 堆内存溢出后处理方案。 5 瓶颈分析总结及案例

    垃圾回收相关总结

    关于jvm 垃圾回收的一些日常总结,包括垃圾回收策略,默认垃圾回收策略和一些实验数据

    关于JVM内存回收算法的补充

    面对不同的代,采用不同的回收策略。 而年轻代又可以分为1个Eden和2个Survivor。对于Eden,大多数对象都是先在此区域开辟空间,存储年轻对象的实例数据。Eden相对于Old带,空间是比较小的。所以对象数据不断地在此...

    JVM体系结构与GC调优PPT

    JVM体系结构与GC调优,内容涉及JVM的垃圾回收的各种策略和JVM的各种内存的结构的分配

    Java新生代老年代的划分及回收算法

    Java堆是垃圾回收器管理的主要区域,百分之九十九的垃圾回收发生在Java堆,另外百分之一发生在方法区,因此又称之为”GC堆”。根据JVM规范规定的内容,Java堆可以处于物理上不连续的内存空间中。 当前JVM对于堆的...

    Python垃圾回收机制

    Garbage collection(GC垃圾回收) python采用的是引用计数机制为主,标记-清除和分代收集(隔代回收、分代回收)两种机制为辅的策略 引用计数机制的优点: 1、简单 2、实时性:一旦没有引用,内存就直接释放了。不用像...

    超硬核!!!一篇文章搞定整个JVM的垃圾回收系统

    3.2 Minor GC、Major GC、Full GC区别及触发条件4 如何判断对象是否存活4.1 引用计数法4.4.2 可达性分析法5 垃圾回收机制策略(也称为GC的算法)5.1 引用计数算法(Reference counting)5.2 标记–清除算法(Mark-...

    浅谈jvm原理

    浅谈jvm原理(概念,运行机制,基本架构,运行时数据区,类加载系统,垃圾回收算法,垃圾回收策略,gc参数,调优策略)

Global site tag (gtag.js) - Google Analytics