我正在阅读有关 Java 中的垃圾收集和终结的内容,并尝试了一个示例。我点击按钮1,内存就会跳起来。但是当我点击按钮2时,内存并没有释放已用空间! 我做错了什么以及如何从未使用的对象中释放内存?
据我所知(我可能是错的):
- 当同一个变量被多次重新实例化时,旧对象将被销毁。
- 当我将变量设置为 null 时,旧对象将被销毁。
- 数组单元格为空值。当父数组对象没有变量引用它时,它们将被销毁。
- 如何释放 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/