我有一个数组int dom[][] = new int[28][3];
,我移动到另一个数组。如何释放该阵列的空间?我在android模拟器上运行时遇到高cpu警告。
答案 0 :(得分:4)
在Java中,您不必手动释放数组,垃圾收集器将为您清除内存。您可以将对象设置为null:dom = null
。
CPU警告与此没有任何关系,android模拟器在启动时有一些CPU密集型操作,因此在模拟器启动之前,处理器将处于100%的某个时间。
答案 1 :(得分:2)
将dom设置为null。以便在下一个垃圾收集器运行时释放它。
答案 2 :(得分:2)
您不必执行任何操作:如果数组因为您没有对它的引用而无法再访问,则会进行垃圾回收(将引用设置为null)没有区别。)
通常,如果这是一个局部变量,并且您没有从声明它的方法返回它,那么一旦该方法退出(即一旦数组超出范围),它就有资格获得GC
如果你“获得高cpu警告”,那么问题在于CPU,而不是内存。
答案 3 :(得分:1)
我在运行android模拟器时遇到高cpu警告?
它可能是任何东西。但是,我猜你已经添加了一些明确的System.gc()
调用,以便稍早释放空间。
不要那样做!
虚拟机通常知道何时收集大量潜在垃圾......这是运行GC的最佳时机。而且你可以放心,当JVM决定用OOME拯救时,GC会立即运行。
如果您自己致电System.gc()
,可能会导致虚拟机浪费CPU周期,但效果不大。
在大多数情况下,最佳策略是让VM根据需要安排GC。 Null'ing引用可以提供帮助,但通常是不必要的。 (坦率地说,一个28x3的整数数组占用的空间很小,可能不值得归零。)