如何在 Java 中防止类的对象被垃圾回收2025 年 4 月 21 日 | 阅读 4 分钟 我们知道,当一个对象没有被引用时,它就会被垃圾收集器自动回收。在本教程中,我们将了解如何在 Java 中避免对象的垃圾回收。不过,在此之前,让我们先举一个垃圾回收的例子。 文件名: ABC.java 输出 Inside the method foo. 解释: 引用变量的作用域仅限于方法 foo()。因此,当控制流离开该方法时,引用 r 将失效,使得在方法 foo() 中创建的对象成为无引用对象,因此,该对象就可以被垃圾收集器回收。 有几种方法可以确保对象在 Java 中不被删除。它们如下所述。 通过增加堆内存在 Java 中,内存分配给对象是在一个称为“堆”的分区中。此外,众所周知,堆内存是有限的。因此,总有必要释放内存,以便它可以分配给新对象。然而,可以增加堆内存,这将在一定程度上帮助使对象不可删除。 借助单例类对于单例类,只创建一个对象,该对象由一个静态变量引用。此外,我们知道静态变量的内存分配在类区域(一种内存类型)而不是栈中。因此,静态变量的生命周期会持续到程序结束。下面的程序说明了如何做到这一点。 文件名: Singletn.java 输出 Inside the display method. 上面的例子说明了对象的引用由一个持续到程序结束的静态变量持有。因此,我们也可以说,在程序生命周期结束之前,对象都不会失去引用,使其不可删除。 借助 public void finalise()finalize() 方法是一个回调方法。它不是由用户调用的方法。相反,它由 JVM 调用。finalize() 方法是在对象上执行的最后一个方法。子类可以覆盖 finalize() 方法以处理系统资源或执行其他清理工作。那么,可以做的是存储将要被删除的对象的引用。下面展示了它的一个说明。 文件名: DemonstrateFinalize.java 输出 The reference of the object is saved. The object will not be gobbled by the garbage collector. 在上面的程序中,只创建了一个类的对象,而且是在方法 foo() 中创建的。因此,当方法执行结束时,引用 obj 被销毁,使得对象成为无引用对象。因此,当运行垃圾收集器回收无引用对象时,finalize() 方法会被执行,在该方法中,无引用对象获得了引用 df,因此,垃圾收集器无法回收该对象。 下一主题Java 类型转换对象为类 |
Permutation Java 要确定序列元素的字典序排列,请应用排列方法。它指的是按字典序将数组的项重新排列为下一个更大的排列。重新排列项以产生字典序排列是基础...
阅读 6 分钟
Elasticsearch 是一个基于 Apache Lucene 的全文本搜索和分析引擎。Elasticsearch 使从不同来源进行数据聚合操作以及对存储的数据执行非结构化查询(例如,模糊搜索)变得更加容易。它以...的方式存储数据。
阅读 6 分钟
给定一个整数 'N'。我们的任务是找出大小等于 N 的二进制字符串的总数,这些字符串不包含连续的 1。示例 1:输入:int N = 4 输出:8 说明:对于 N 等于 4,我们有以下...
阅读9分钟
在 Java 中,当我们创建类的对象时,它会在内存(堆)中占用一些空间。如果我们不删除这些对象,它们将保留在内存中并占用不必要的空间,这从编程的角度来看是不恰当的。为了解决...
阅读 6 分钟
Java中的enum关键字具有一种特殊的数据类型,称为Enum,它通常是一组(集合)常量。更具体地说,Java Enum类型是Java类的一种特殊形式。Enum可以包含常量、过程等……
阅读 6 分钟
在 Java 中,Void 类是一个 final 且未实例化的占位符,它持有对表示 Java void 关键字的类对象的引用。此类属于 java.lang 包,没有任何方法,继承了 java.lang.Object 类中的所有方法。语法:public...
5 分钟阅读
错误是在程序执行时出现的,问题、bug 或人为错误。异常会中断程序的流程并异常终止程序。不建议异常终止程序,因此我们需要...
阅读 6 分钟
Java 中的自定义类允许开发人员通过定义封装状态(属性)和行为(方法)的新类来创建自己的数据类型。这种灵活性是 Java 面向对象特性的基础,它能够创建复杂且可重用的代码。以下是有关自定义的详细指南...
5 分钟阅读
Java 中的 getClass() 方法是继承自 Object 类的一个基本方法,Object 类是 Java 类层次结构的根。它允许我们检索对象的运行时类。Java 中的每个类都直接或间接继承自该类。...
阅读 13 分钟
Java 中的图像处理 - 图像比较 它具有许多用于图像处理的库和工具,例如 BufferedImage、Graphics2D 和 java.awt 包,它们已准备好通过诸如编辑、编辑和比较图像之类的功能来帮助进行图像编辑。这些库使任何开发人员都能够...
7 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India