27 #include "memory/allocation.hpp" 28 #include "services/memoryManager.hpp" 29 #include "services/memoryPool.hpp" 30 #include "services/memoryService.hpp" 31 32 class ZServiceabilityCounters; 33 34 class ZServiceabilityMemoryPool : public CollectedMemoryPool { 35 public: 36 ZServiceabilityMemoryPool(size_t min_capacity, size_t max_capacity); 37 38 virtual size_t used_in_bytes(); 39 virtual MemoryUsage get_memory_usage(); 40 }; 41 42 class ZServiceabilityMemoryManager : public GCMemoryManager { 43 public: 44 ZServiceabilityMemoryManager(ZServiceabilityMemoryPool* pool); 45 }; 46 47 class ZServiceability VALUE_OBJ_CLASS_SPEC { 48 private: 49 const size_t _min_capacity; 50 const size_t _max_capacity; 51 ZServiceabilityMemoryPool _memory_pool; 52 ZServiceabilityMemoryManager _memory_manager; 53 ZServiceabilityCounters* _counters; 54 55 public: 56 ZServiceability(size_t min_capacity, size_t max_capacity); 57 58 void initialize(); 59 60 MemoryPool* memory_pool(); 61 GCMemoryManager* memory_manager(); 62 ZServiceabilityCounters* counters(); 63 }; 64 65 class ZServiceabilityMemoryUsageTracker VALUE_OBJ_CLASS_SPEC { 66 public: 67 ~ZServiceabilityMemoryUsageTracker(); 68 }; 69 70 class ZServiceabilityManagerStatsTracer VALUE_OBJ_CLASS_SPEC { 71 private: 72 TraceMemoryManagerStats _stats; 73 74 public: 75 ZServiceabilityManagerStatsTracer(bool is_gc_begin, bool is_gc_end); 76 }; 77 78 class ZServiceabilityCountersTracer VALUE_OBJ_CLASS_SPEC { 79 public: 80 ZServiceabilityCountersTracer(); 81 ~ZServiceabilityCountersTracer(); 82 }; 83 84 template <bool IsGCStart, bool IsGCEnd> 85 class ZServiceabilityTracer : public StackObj { 86 private: 87 ZServiceabilityMemoryUsageTracker _memory_usage_tracker; 88 ZServiceabilityManagerStatsTracer _manager_stats_tracer; 89 ZServiceabilityCountersTracer _counters_tracer; 90 91 public: 92 ZServiceabilityTracer() : 93 _memory_usage_tracker(), 94 _manager_stats_tracer(IsGCStart, IsGCEnd), 95 _counters_tracer() {} 96 }; 97 98 typedef ZServiceabilityTracer<true, false> ZServiceabilityMarkStartTracer; | 27 #include "memory/allocation.hpp" 28 #include "services/memoryManager.hpp" 29 #include "services/memoryPool.hpp" 30 #include "services/memoryService.hpp" 31 32 class ZServiceabilityCounters; 33 34 class ZServiceabilityMemoryPool : public CollectedMemoryPool { 35 public: 36 ZServiceabilityMemoryPool(size_t min_capacity, size_t max_capacity); 37 38 virtual size_t used_in_bytes(); 39 virtual MemoryUsage get_memory_usage(); 40 }; 41 42 class ZServiceabilityMemoryManager : public GCMemoryManager { 43 public: 44 ZServiceabilityMemoryManager(ZServiceabilityMemoryPool* pool); 45 }; 46 47 class ZServiceability { 48 private: 49 const size_t _min_capacity; 50 const size_t _max_capacity; 51 ZServiceabilityMemoryPool _memory_pool; 52 ZServiceabilityMemoryManager _memory_manager; 53 ZServiceabilityCounters* _counters; 54 55 public: 56 ZServiceability(size_t min_capacity, size_t max_capacity); 57 58 void initialize(); 59 60 MemoryPool* memory_pool(); 61 GCMemoryManager* memory_manager(); 62 ZServiceabilityCounters* counters(); 63 }; 64 65 class ZServiceabilityMemoryUsageTracker { 66 public: 67 ~ZServiceabilityMemoryUsageTracker(); 68 }; 69 70 class ZServiceabilityManagerStatsTracer { 71 private: 72 TraceMemoryManagerStats _stats; 73 74 public: 75 ZServiceabilityManagerStatsTracer(bool is_gc_begin, bool is_gc_end); 76 }; 77 78 class ZServiceabilityCountersTracer { 79 public: 80 ZServiceabilityCountersTracer(); 81 ~ZServiceabilityCountersTracer(); 82 }; 83 84 template <bool IsGCStart, bool IsGCEnd> 85 class ZServiceabilityTracer : public StackObj { 86 private: 87 ZServiceabilityMemoryUsageTracker _memory_usage_tracker; 88 ZServiceabilityManagerStatsTracer _manager_stats_tracer; 89 ZServiceabilityCountersTracer _counters_tracer; 90 91 public: 92 ZServiceabilityTracer() : 93 _memory_usage_tracker(), 94 _manager_stats_tracer(IsGCStart, IsGCEnd), 95 _counters_tracer() {} 96 }; 97 98 typedef ZServiceabilityTracer<true, false> ZServiceabilityMarkStartTracer; |