ROOT 가이드

A.1 TObject 메모리 트래킹하기

ROOT는 프로그램상에서 생성되고 파괴되는 모든 TObject를 상속한 클래스를 gObjectTable에 담아 트래킹한다. 사용자는 이 정보를 다음과 같이 들여다 볼 수 있다.

홈폴더의 .rootrc 파일을 열어서 다음을 추가한다.

vi ~/.rootrc
Root.MemStat:            1
Root.ObjectStat:         1

코드에 다음 헤더를 추가한다.

#include "TObjectTable.h"

메모리를 정보를 보고자 하는 부분에 다음과 같이 적는다. 

gObjectTable -> Print();

코드를 돌리면 위 줄을 적은 위치마다 다음과 같은 메세지가 나온다.

Object statistics

class                         cnt    on heap     size    total size    heap size

================================================================================

ROOT::TSchemaRule               9          9      304          2736         2736

TVirtualX                       1          1      144           144          144

TGlobal                         2          2       88           176          176

ROOT::TSchemaRule::TSources        9          9       88           792          792

TBenchmark                      1          1      104           104          104

TList                        1242       1240      104        129168       128960

TObjectTable                    1          1       32            32           32

TROOT                           1          0      672           672            0

TPluginManager                  1          1       40            40           40

TFileHandler                    1          1       56            56           56

TStreamerInfo                   1          1      224           224          224

THashTable                     25         25       72          1800         1800

TClassTable                     1          1       16            16           16

TRandom3                        1          1     2576          2576         2576

THashList                      11         11      112          1232         1232

TGuiFactory                     1          1       64            64           64

TPosixThreadFactory             1          0       64            64            0

TProcessID                      1          1       88            88           88

TObjString                     18         18       40           720          720

TEnv                            2          2       56           112          112

TEnvRec                      5654       5654       96        542784       542784

TInterpreter                    1          1       64            64           64

TClass                         33         33      496         16368        16368

TQClass                         6          6      528          3168         3168

TFolder                        19         19       80          1520         1520

TRint                           1          1      296           296          296

TNamed                         92         92       64          5888         5888

TMessageHandler                 1          1      144           144          144

ROOT::Detail::TSchemaRuleSet        4          4      104           416          416

TObjArray                      76         76       64          4864         4864

TOrdCollection                  6          6       72           432          432

TSignalHandler                  1          1       56            56           56

TBits                           1          1       32            32           32

TMethod                         7          7      200          1400         1400

TMacOSXSystem                   1          1      664           664          664

TExMap                          6          6       32           192          192

TListOfEnumsWithLock            1          1      152           152          152

TColor                        598        598       96         57408        57408

TDataType                      17         17      136          2312         2312

TStyle                          7          7     1496         10472        10472

TSystemDirectory                1          1      104           104          104

TListOfFunctions                5          5      216          1080         1080

TBaseClass                      7          7      144          1008         1008

TProcessUUID                    1          1      104           104          104

--------------------------------------------------------------------------------

Total:                       7876       7872    10384        791744       790800

================================================================================

각 왼쪽에서부터 다음과 같다. 메모리 크기 단위는 byte다.

  • 클래스 이름 (class)
  • 개수 (cnt)
  • heap에 존재하는 개수 (on heap), 
  • 클래스의 크기 (size)
  • 클래스의 크기 × 개수 (total size)
  • heap에 존재하는 클래스의 크기 × 개수 (heap size)

 

댓글

댓글 본문