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