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

标签 java arrays memory-management garbage-collection heap-memory

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

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

感谢您的帮助!

最佳答案

简短的回答是"is"——如果您使用这样的数组:

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
}

关于java - 在 Java 中删除数组的一部分以释放堆上的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2747111/

相关文章:

java - 对于多个RecyclerView来说,Adapter实现的良好且高效的方式是什么?

java - 不同初始容量和负载因子的HashMap性能

java - Char 到 int,只使用大写字母?

java - 我可以强制 jetty *不*包含用于单元测试的 Content-Length header 吗?

c++ - 返回静态局部变量作为引用

variables - 它如何知道我的值在内存中的位置?

ios - iOS-NJSONSerialization导致内存泄漏?(根据Instruments)

javascript - 如何在对对象数组进行排序后再次反向排序?

PHP-CI : How to Combine 2 arrays from few tables in databases?

ios - Swift:从解析中检索数据编号并计算平均值