首页 > 编程知识 正文

java new一个对象过程,finalize方法

时间:2023-05-05 08:08:57 阅读:172538 作者:786

(1) finalized ) )方法的原理Java提供了一个名为(finalize ) )的方法。 理想情况下,当垃圾收集器准备释放对象占用的存储空间时,首先应该调用finalize ),以便在下一次垃圾收集期间实际回收对象的内存。 因此,使用finalize (),可以在垃圾收集过程中进行重要的去除和清扫工作。

)二)与c析构函数的不同许多c程序员使用c的内存管理规则来管理Java中的内存。 在C中,使用new关键字创建对象,调用析构函数(分配内存,然后调用构造函数完成初始化任务),再使用delete键销毁对象(释放内存)。 但是,在Java中,程序员使用new创建对象,而销毁对象的工作不由程序员管理。 Java引入了垃圾收集器来管理Java的垃圾收集。 其本质是Java的主进程具有零守护进程,而不是由程序员决定何时丢弃对象。

(三) finalized ) )方法的用途中使用finalize ),看起来是因为有时需要用与Java一般方法不同的方法,通过分配内存来做类似于C的事情。 这主要可以在“局部方法”中完成,它是一种从Java中调用非Java方法的方法。 C和C是目前唯一受本地方法支持的语言。 但是,因为可以调用用其他语言编写的子程序,所以什么都可以有效地调用。 在非Java代码内部,也许可以调用c的malloc ) )系函数,用它来分配存储空间。 此外,除非调用free (),否则不会释放存储空间,从而导致内存“漏洞”。 当然,free (是c和c函数,因此finalize ) )必须在内部的本地方法中调用。

(四)如何判断目标人群死亡

(一)引用计数法

将引用计数器添加到对象,并在某个位置每次引用时添加一个引用计数器。如果引用无效,则引用计数器将减少一个。 随时参照计数器

零。 对象不能再使用。

特点:该方法简单高效。 但是,主流的虚拟机没有使用它。

(二)可达性分析算法

该算法的基本思想是从这些节点开始,从一组称为“GC Root”的对象开始向下搜索。 节点所经过的路径称为参考链,如果没有连接从对象到GC Root的参考链,则证明该对象不可用。

(五)常见垃圾回收算法

(一)标志清除法

标记去除法分为两个阶段,标记阶段对可回收对象进行标记; 清除舞台,并清除已标记的对象。

优点:实现简单

缺点:效率低,容易产生大量碎片。

(二)复制算法

为了解决上述算法效率低下的问题,准备了大小相等的两个内存区域,采用了一次只使用一个内存区域的复制算法。

每次重用时,将当前内存区域中存活的对象复制到其他内存中,并清除当前内存区域中的所有对象。 像这样往返。

(三)标记整理算法

和标签清除算法一样,分为2个阶段,标签阶段标记可复用的对象,将生存的对象移动到存储器的边缘,去除边界以外的碎片。

(四)分代采集算法

根据对象的生存特征,将内存分为新生代和旧时代,新生代生存着比较少量的对象,新生代在采用复制算法的旧时代,大多数对象生存下来采用标记去除法和标记整理法。

也就是说,虚拟机根据对象的生存特性,采取不同的分代收集算法。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。