删除Java中的一部分数组以释放堆内存

1 java arrays heap garbage-collection memory-management

我正在为Java中的背包问题实现动态编程算法.我声明了数组,然后将其大小初始化为[对象数] [背包的容量].

当我的对象数量或容量变得太大时,我会收到内存错误,因为堆上的空间不足.我的问题是:如果我继续删除双数组中的行,Java会在删除时释放内存吗?或者Java是否保留了我最初创建的数组大小的内存空间?如果是后者,有没有办法在Java中手动释放内存?

谢谢你的帮助!

Sbo*_*odd 5

简短的回答是"是" - 如果你使用这样的数组:

private void foo () {
  int[][] bar = new int[10][10];
  bar[1] = null;  
  //at this point, the array that was in bar[1] is eligible for garbage collection
  //unless someone else has a reference to it
}
Run Code Online (Sandbox Code Playgroud)