RE: [ROOT] memory problem (TFile)

From: Diego Faso (faso@to.infn.it)
Date: Fri Apr 09 2004 - 10:44:38 MEST


Hi. I tried, but the result is the same. I also tried to close the file
with the "R" option, but the situation is the same...
Could it be a problem in the TFile class?
Cheers
Diego

On Thu, 8 Apr 2004, Philippe Canal wrote:

> 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