摘要:垃圾回收,回收的目的在于清理不再使用的对象。通过确定对象是否被活动对象引用来确定是否收集该对象。当对象引用计数值为时,则会被收集。
垃圾回收 GC (Garbage Collection),回收的目的在于 清理不再使用的对象。GC 通过确定对象是否被活动对象引用来确定是否收集该对象。GC 首先要判断 该对象是否可以收集。
常用的两种方法:
引用计数法
这种方法是属于早期策略。其中,堆中的每个对象都有一个引用计数,当对象A创建,对象会被分配一个变量,初始化为 1 ,当任何变量被赋值为这个对象的引用时,计数+1(a = b,则b引用对象计数+1)。当对象引用计数值为 0 时,则会被 GC 收集。
优点:引用计数收集器可以很快地执行,交织在程序运行中。
缺点:无法检测出循环引用。
跟踪收集器
如今JVM 采用引用遍历,沿着整个对象图上的每个链接,递归确定可到达的对象,若对象不能从根对象到达,则会将它作为垃圾 收集。
在遍历对象时,标记能到达的对象进行。然后GC删除不可达到的对象,这样会导致内存分为一小段,需要重新整合。
在执行时,需要停止其他活动,只有GC运行,多线程会增加效率。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/74663.html
摘要:一次性编译成机器码,脱离开发环境独立运行,运行效率较高。解释型语言使用专门的解释器对源程序逐行解释成特定平台的机器码并立即执行的语言。垃圾回收机制保护程序的完整性,垃圾回收是语言安全性策略的一个重要部分。 Java程序运行机制 编译型语言 使用专门的编译器,针对特定平台(操作系统)将某种高级语言源代码一次性翻译成可被该平台硬件执行的机器码(包括机器指令和操作数),并包装成该平台所能识...
摘要:当一个实例被创建的时候,它最初被存放在堆内存空间的年轻代的区中。老年代或者永久代是堆内存的第二个逻辑部分。在垃圾回收过程中扫描属于部分的堆内存。一旦实例从堆内存中删除了,它们原来的位置将空出来给以后分配实例使用。 本文非原创,翻译自How Java Garbage Collection Works?在Java中为对象分配和释放内存空间都是由垃圾回收线程自动执行完成的。和C语言不一样的是...
摘要:在架构中,堆内存和垃圾回收器这两个部分和垃圾回收相关。堆内存在的内存模型中,最重要的是要了解堆内存的概念。在垃圾回收的过程中,这些对象将被从堆内存中清除,同时它们的空间也就被回收了。 本文非原创,翻译自Java Garbage Collection introduction在Java中为对象分配和释放内存空间都是由垃圾回收线程自动执行完成的。和C语言不一样的是Java程序员不需要手动写...
摘要:并发标记清除垃圾回收器,使用多个线程来扫描堆内存并标记可被清除的对象,然后清除标记的对象。垃圾回收器应用于大的堆内存空间。它将堆内存空间划分为不同的区域,对各个区域并行地做回收工作。它会通过把重复的值移动到同一个数组来优化堆内存占用。 本文非原创,翻译自Types of Java Garbage Collectors在Java中为对象分配和释放内存空间都是由垃圾回收线程自动执行完成的。...
摘要:什么是自动垃圾回收自动垃圾回收是一种在堆内存中找出哪些对象在被使用,还有哪些对象没被使用,并且将后者删掉的机制。本文接下来将介绍垃圾回收机制的基本过程。事件小型垃圾回收属于一种叫的事件。还要注意,的的时长受年老代垃圾回收器类型的影响。 什么是自动垃圾回收?自动垃圾回收是一种在堆内存中找出哪些对象在被使用,还有哪些对象没被使用,并且将后者删掉的机制。所谓使用中的对象(已引用对象),指的是...
摘要:执行引擎作用执行字节码,或者执行本地方法运行时数据区其实就是指在运行期间,其对内存空间的划分和分配。 虽是读书笔记,但是如转载请注明出处https://uestc-dpz.github.io..拒绝伸手复制党 JVM Java 虚拟机 Java 虚拟机(Java virtual machine,JVM)是运行 Java 程序必不可少的机制。JVM实现了Java语言最重要的特征:即平台...
阅读 2269·2021-11-17 09:33
阅读 825·2021-10-13 09:40
阅读 547·2019-08-30 15:54
阅读 757·2019-08-29 15:38
阅读 2396·2019-08-28 18:15
阅读 2461·2019-08-26 13:38
阅读 1815·2019-08-26 13:36
阅读 2109·2019-08-26 11:36