RE: [ROOT] memory problem (TFile)

From: Philippe Canal (pcanal@fnal.gov)
Date: Thu Apr 08 2004 - 22:23:03 MEST


Hi,

Instead of 
    TFile f1 = TFile("trees.root")
you should use
    TFile *f1 = new TFile("trees.root");
Instead of 
    t->Delete();
use
    delete t;
In addition to 
    f1->Close();
use
    f1->Close();
    delete f1;

Also note that there is a fair amount of one-time initialization, loading,
creating that can happen the first time (in a process) you use one of ROOT
facility.  You should actually compare the result __after__ the first time.

I.e.
 (low amount of memory being used)
    TFile *f1 = new TFile("trees.root");
    TTree *t = (TTree *) f1.Get("h127")
    delete f1;
    gROOT->Reset();
 (some higher amount of memory being used)
    TFile *f1 = new TFile("trees.root");
    TTree *t = (TTree *) f1.Get("h127")
    delete f1;
    gROOT->Reset();
 (SAME amount of memory being used.)

Cheers,
Philippe.

-----Original Message-----
From: owner-roottalk@pcroot.cern.ch
[mailto:owner-roottalk@pcroot.cern.ch]On Behalf Of Diego Faso
Sent: Thursday, April 08, 2004 9:54 AM
To: roottalk@cern.ch
Subject: [ROOT] memory problem (TFile)


Good afternoon. I need to open, read and close several root files in a
'for loop'.
I encountered a problem of memory allocation: the memory allocated for the
'root' process does not decrease when I close the file

Here is an example:
 -------------------------------------------
(prompt)# root
 (root process memory = 33908)

root [0] TFile f1 = TFile("trees.root")
 (root process memory = 35552)

root [1] TTree *t = (TTree *) f1.Get("h127")
 (root process memory = 37492)

root [2] t->Delete()
 (root process memory = 37492)

root [3] f1.Close()
 (root process memory = 37492)

root [4] gROOT->Reset()
 (root process memory = 37496)
 -------------------------------------------

How can I solve this problem?

My machine is:

 - Linux red hat 9.0
 - gcc version 3.2.2 20030222 (Red Hat Linux 3.2.2-5)
 - root version 4.00/02
 (I noticed the same problem for the root version 3.10.02)


Cheers
Diego Faso



This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:07 MET