home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 39 / IOPROG_39.ISO / SOFT / sdkjava40.exe / data1.cab / fg_Samples / Samples / Profiler / heapmon / gcinfo.hpp < prev    next >
Encoding:
C/C++ Source or Header  |  2000-05-04  |  2.8 KB  |  112 lines

  1. // gcinfo.hpp
  2. //
  3. // Created 07/29/99
  4. //
  5. // (C)Copyright 1999 Microsoft Corporation, All rights reserved.
  6. //
  7.  
  8. #ifndef __GCINFO_HPP__
  9. #define __GCINFO_HPP__
  10.  
  11. #include "hpmnclnt.hpp"
  12.  
  13.  
  14. struct PerGCInformation
  15. {
  16.     // GC number
  17.     ULONG iGC;
  18.  
  19.     // which parts of this struct are filled in
  20.     DWORD InfoMaskCollected;
  21.  
  22.     // Valid if (InfoMaskCollected & HMC_INFO_HEAP_OBJECTS)
  23.     
  24.     // number of objects
  25.     ULONG nObjects;
  26.     // total bytes of live objects
  27.     size_t cbObjects;
  28.  
  29.     // Valid if (InfoMaskCollected & (HMC_INFO_HEAP_OBJECTS | HMC_INFO_HEAP_OBJECT_REFS))
  30.     //                            == (HMC_INFO_HEAP_OBJECTS | HMC_INFO_HEAP_OBJECT_REFS)
  31.     
  32.     // number of edges from objects
  33.     ULONG nObjectEdges;
  34.     // number of objects with multiple references
  35.     ULONG nObjectsWithMultipleReferences;
  36.  
  37.     // Valid if (InfoMaskCollected & HMC_INFO_HEAP_ROOTS)
  38.     
  39.     // per-root counts
  40.     ULONG rgcRoots[C_LAST - C_FIRST - 1];
  41.  
  42.     // Valid if (InfoMaskCollected & HMC_INFO_HEAP_ROOT_REFS)
  43.  
  44.     // number of edges from roots
  45.     ULONG nRootEdges;
  46.     // per-root reference counts
  47.     ULONG rgcRootReferences[C_LAST - C_FIRST - 1];
  48.  
  49.     // Valid if (InfoMaskCollected & HMC_INFO_COUNT_MONITORS)
  50.     
  51.     // number of active object monitors
  52.     __int64 nObjectMonitors;
  53.  
  54.     PerGCInformation *prev;
  55.     PerGCInformation *next;
  56.  
  57.  
  58.     ULONG GetTotalNumObjects ()
  59.     {
  60.         ASSERT(InfoMaskCollected & HMC_INFO_HEAP_OBJECTS);
  61.         return nObjects;
  62.     }
  63.  
  64.     size_t GetTotalSizeOfObjects ()
  65.     {
  66.         ASSERT(InfoMaskCollected & HMC_INFO_HEAP_OBJECTS);
  67.         return cbObjects;
  68.     }
  69.  
  70.     ULONG GetNumObjectEdges ()
  71.     {
  72.         ASSERT((InfoMaskCollected & (HMC_INFO_HEAP_OBJECTS | HMC_INFO_HEAP_OBJECT_REFS))
  73.                                  == (HMC_INFO_HEAP_OBJECTS | HMC_INFO_HEAP_OBJECT_REFS));
  74.         return nObjectEdges;
  75.     }
  76.  
  77.     ULONG GetNumMultiRefObjects ()
  78.     {
  79.         ASSERT((InfoMaskCollected & (HMC_INFO_HEAP_OBJECTS | HMC_INFO_HEAP_OBJECT_REFS))
  80.                                  == (HMC_INFO_HEAP_OBJECTS | HMC_INFO_HEAP_OBJECT_REFS));
  81.         return nObjectsWithMultipleReferences;
  82.     }
  83.  
  84.     ULONG GetNumRootEdges ()
  85.     {
  86.         ASSERT(InfoMaskCollected & HMC_INFO_HEAP_ROOT_REFS);
  87.         return nRootEdges;
  88.     }
  89.  
  90.     ULONG GetRootCountByType (CONTAINER_TYPE type)
  91.     {
  92.         ASSERT(InfoMaskCollected & HMC_INFO_HEAP_ROOTS);
  93.         return rgcRoots[type - C_FIRST - 1];
  94.     }
  95.  
  96.     ULONG GetNumReferencesFromRootType (CONTAINER_TYPE type)
  97.     {
  98.         ASSERT(InfoMaskCollected & HMC_INFO_HEAP_ROOT_REFS);
  99.         return rgcRootReferences[type - C_FIRST - 1];
  100.     }
  101.  
  102.     __int64 GetNumObjectMonitors ()
  103.     {
  104.         ASSERT(InfoMaskCollected & HMC_INFO_COUNT_MONITORS);
  105.         return nObjectMonitors;
  106.     }
  107. };
  108.  
  109.  
  110. #endif /* __GCINFO_HPP__ */
  111.  
  112.