java - 如何清理该 Java 示例内存

标签 java memory garbage-collection finalize

我正在阅读有关 Java 中的垃圾收集和终结的内容,并尝试了一个示例。我点击按钮1,内存就会跳起来。但是当我点击按钮2时,内存并没有释放已用空间! 我做错了什么以及如何从未使用的对象中释放内存?

据我所知(我可能是错的):

  1. 当同一个变量被多次重新实例化时,旧对象将被销毁。
  2. 当我将变量设置为 null 时,旧对象将被销毁。
  3. 数组单元格为空值。当父数组对象没有变量引用它时,它们将被销毁。
  4. 如何释放 Collection 品?数组规则如何应用?

代码:

public class Memory extends javax.swing.JFrame {

    Object[] object;

    private void Button1ActionPerformed(java.awt.event.ActionEvent evt) {
        object = new Object[10240000];
    }

    private void Button2ActionPerformed(java.awt.event.ActionEvent evt) {
        object = null;

        System.gc();
        System.runFinalization();

        //OR

        System.runFinalization();
        System.gc();
    }
}

最佳答案

System.gc()只是JVM清理内存的建议。它可能会也可能不会接受这个建议。你没有做错任何事。放松。

关于java - 如何清理该 Java 示例内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29526227/

相关文章:

java - Json Spring : output is xml but I want JSON

java - 使用以下代码输出错误

java - 是什么导致了这个 "No Persistence provider for EntityManager named ___"异常?

linux - 来自内核模块的调试堆栈

java - Java 堆的大 NewSize 使进程长时间无响应

java - 550 ftp 期间文件名无效错误

C++ - 游戏引擎中的内存池和对象分配

windows - 为什么 Windows XP(32 位)的可用内存限制为 3GB?

java - 大型 Java 列表性能不佳

C# 垃圾收集器开始/结束回调