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!
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
}