1 #ifndef AliPHOSMEMORYWATCHER_H
2 #define AliPHOSMEMORYWATCHER_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
6 //_________________________________________________________________________
7 /*Basic Memory Leak utility.
9 You can use this tiny class to *see* if your program is leaking.
11 AliPHOSMemoryWatcher memwatcher;
12 some program loop on events here {
13 if ( nevents % x == 0 )
15 // take a sample every x events
16 memwatcher.watch(nevents);
19 TFile f("out.root","RECREATE");
22 In the output root file you'll get 3 graphs representing
23 the evolAliPHOSon, as a function of the number of events, of :
24 - VSIZE is the virtual size (in KBytes) of your program, that is sort of
26 - RSSIZE is the resident size (in KBytes), that is, the part of your
27 program which is really in physical memory.
28 - TIME is an estimate of time per event (really it's the time elasped
29 between two calls to watch method)
30 WARNING: this is far from a bulletproof memory report (it's basically
31 using UNIX command ps -h -p [PID] -o vsize,rssize to do its job).
32 It has only been tested on Linux so far.
34 But by fitting the VSIZE by a pol1 under ROOT, you'll see right away
35 by how much your program is leaking.
37 //*-- Author: Laurent Aphecetche(SUBATECH)
38 // --- ROOT system ---
43 class AliPHOSMemoryWatcher : public TObject
46 AliPHOSMemoryWatcher(unsigned int maxsize=10000);
47 ~AliPHOSMemoryWatcher();
50 unsigned int size(void) const { return fSize; }
51 int X(int n) const { return fX[n]; }
52 int VSIZE(int n) const { return fVSIZE[n]; }
53 int RSSIZE(int n) const { return fRSSIZE[n]; }
54 double TIME(int n) const { return fTIME[n]; }
55 TGraph* graphVSIZE(void);
56 TGraph* graphRSSIZE(void);
57 TGraph* graphTIME(void);
63 unsigned int fMAXSIZE;