00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef COH_OBJECT_COUNT_HEAP_ANALYZER_HPP
00017 #define COH_OBJECT_COUNT_HEAP_ANALYZER_HPP
00018
00019 #include "coherence/lang/compatibility.hpp"
00020
00021 #include "coherence/lang/HeapAnalyzer.hpp"
00022 #include "coherence/native/NativeAtomic64.hpp"
00023
00024 #include <ostream>
00025
00026 COH_OPEN_NAMESPACE2(coherence,lang)
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040 class COH_EXPORT ObjectCountHeapAnalyzer
00041 : public class_spec<ObjectCountHeapAnalyzer,
00042 extends<Object>,
00043 implements<HeapAnalyzer> >
00044 {
00045 friend class factory<ObjectCountHeapAnalyzer>;
00046
00047
00048
00049 protected:
00050
00051
00052
00053
00054
00055 ObjectCountHeapAnalyzer();
00056
00057
00058
00059
00060 public:
00061
00062
00063
00064 class COH_EXPORT Snapshot
00065 : public class_spec<Snapshot,
00066 extends<Object>,
00067 implements<HeapAnalyzer::Snapshot> >
00068 {
00069 friend class factory<Snapshot>;
00070
00071
00072
00073 protected:
00074
00075
00076
00077
00078
00079
00080
00081 Snapshot(int64_t cObjects);
00082
00083
00084
00085 public:
00086
00087
00088
00089 virtual int64_t getObjectCount() const;
00090
00091
00092
00093
00094 virtual HeapAnalyzer::Snapshot::View delta(
00095 HeapAnalyzer::Snapshot::View vThat) const;
00096
00097
00098
00099 public:
00100
00101
00102
00103 virtual void toStream(std::ostream& out) const;
00104
00105
00106
00107 protected:
00108
00109
00110
00111 int64_t m_cObjects;
00112 };
00113
00114
00115
00116
00117 public:
00118
00119
00120
00121 virtual HeapAnalyzer::Snapshot::View capture() const;
00122
00123
00124
00125
00126 virtual HeapAnalyzer::Snapshot::View delta(
00127 HeapAnalyzer::Snapshot::View vSnap) const;
00128
00129
00130
00131
00132 virtual int64_t getObjectCount() const;
00133
00134 protected:
00135
00136
00137
00138 virtual void registerObject(const Object& o);
00139
00140
00141
00142
00143 virtual void unregisterObject(const Object& o);
00144
00145
00146
00147
00148 public:
00149
00150
00151
00152 virtual void toStream(std::ostream& out) const;
00153
00154
00155
00156
00157 protected:
00158
00159
00160
00161 static const size_t s_cCount = 257;
00162
00163
00164
00165
00166 coherence::native::NativeAtomic64 m_acObjects[s_cCount];
00167 };
00168
00169 COH_CLOSE_NAMESPACE2
00170
00171 #endif // COH_OBJECT_COUNT_HEAP_ANALYZER_HPP