我编写了一个用于排序整数类型数组的程序,该程序涉及创建另一个相同大小的数组。排序后,没有使用新数组,所以我想完全摆脱它。到目前为止,我只发现了与删除特定类型元素有关的问题。一些帮助?
信息(如果需要):
原始数组:A[n]
新阵列:B[n]
必须完全删除B[n]
。
答案 0 :(得分:5)
当您离开方法执行排序时,临时数组将被“删除”(或者更准确地说,占用的内存将有资格进行垃圾收集)(当然假设在方法内部创建了临时数组)。
Java
几乎不需要显式的内存释放。
答案 1 :(得分:3)
Array是Java中的引用类型。如果您不想再使用它,可以创建数组引用null
:
arr = null;
答案 2 :(得分:1)
将B设置为null。 B = null;
这样垃圾收集器会在它运行时清理它。虽然您无法控制垃圾收集何时发生,因为每个JVM可能都有自己的垃圾收集算法,您可以建议系统应该运行垃圾收集器以释放一些内存。
您可以通过使用来完成此操作 的System.gc();
注意:如上所述,System.gc();只会建议进行垃圾收集,但不保证垃圾收集。
答案 3 :(得分:1)
通常gc()释放没有引用的内存。但您也可以使用array = null
释放内存。
答案 4 :(得分:0)
如果数组在您的排序方法中是本地定义的,那么当您的方法结束时,它将被安排进行垃圾收集,因为没有现有的引用。
如果是类或实例变量,则将对它的所有引用设置为null
。
在Java中,您不必担心内存释放。没有像C的stdlib free(void*)
或C ++的delete[]
运算符这样的东西。你只是garbage collector。
答案 5 :(得分:0)
将B设置为空数组
B = [];