[Issue 1980] New: memory allocated via double[][] is not being freed by the GC

d-bugmail at puremagic.com d-bugmail at puremagic.com
Tue Apr 8 14:27:51 PDT 2008


http://d.puremagic.com/issues/show_bug.cgi?id=1980

           Summary: memory allocated via double[][] is not being freed by
                    the GC
           Product: D
           Version: 2.012
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: major
          Priority: P2
         Component: DMD
        AssignedTo: bugzilla at digitalmars.com
        ReportedBy: markusle at gmail.com


Hi,

For a data processing application I need to read a large number
of data sets from disk. Due to their size, they have to be read and
processed sequentially, i.e. in pseudocode

int main()
{
    while (some condition)
    {
         double[][] myLargeDataset = read_data();
         process_data(myLargeDataset);
         // free all memory here otherwise next cycle will
         // run out of memory
     }

   return 0;
}

Now, the "problem" is the fact that each single data-set saturates
system memory and hence I need to make sure that all memory
is freed after each process_data step is complete. Unfortunately,
using dmd-2.012 I have not been able to achieve this. Whatever
I do (including nothing, i.e., letting the GC do its job), the resulting
binary keeps accumulating memory and crashing shortly after.
I've tried deleting the array, setting it to null, setting the array 
lengths to 0, and manually forcing the GC to collect, to no avail. 
Hence, is there something I am doing terribly wrong or is this a 
bug in dmd? 

Thanks much,
Markus


-- 



More information about the Digitalmars-d-bugs mailing list