Search code examples
javaarraysmemory-managementgarbage-collectionheap-memory

Deleting Part of An Array in Java to Free Memory on Heap


I am implementing a dynamic programming algorithm for the knapsack problem in Java. I declare the array and then initialize its size to be [number of objects][capacity of knapsack].

When my number of objects or my capacity gets too large, I get a memory error because I run out of space on the heap. My questions is: If I delete rows from my double array as I go along, will Java free the memory as I delete? Or does Java reserve that memory space for the size of the array I originally created? If it's the latter, is there a way to manually free the memory in Java?

Thanks for your Help!


Solution

  • The short answer is "yes" - if you're using arrays like this:

    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
    }