1 /*
2 * Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
85 static void track_code_cache_memory_usage() {
86 // Track memory pool usage of all CodeCache memory pools
87 for (int i = 0; i < _code_heap_pools->length(); ++i) {
88 track_memory_pool_usage(_code_heap_pools->at(i));
89 }
90 }
91 static void track_metaspace_memory_usage() {
92 track_memory_pool_usage(_metaspace_pool);
93 }
94 static void track_compressed_class_memory_usage() {
95 track_memory_pool_usage(_compressed_class_pool);
96 }
97 static void track_memory_pool_usage(MemoryPool* pool);
98
99 static void gc_begin(GCMemoryManager* manager, bool recordGCBeginTime,
100 bool recordAccumulatedGCTime,
101 bool recordPreGCUsage, bool recordPeakUsage);
102 static void gc_end(GCMemoryManager* manager, bool recordPostGCUsage,
103 bool recordAccumulatedGCTime,
104 bool recordGCEndTime, bool countCollection,
105 GCCause::Cause cause);
106
107 static void oops_do(OopClosure* f);
108
109 static bool get_verbose() { return log_is_enabled(Info, gc); }
110 static bool set_verbose(bool verbose);
111
112 // Create an instance of java/lang/management/MemoryUsage
113 static Handle create_MemoryUsage_obj(MemoryUsage usage, TRAPS);
114 };
115
116 class TraceMemoryManagerStats : public StackObj {
117 private:
118 GCMemoryManager* _gc_memory_manager;
119 bool _recordGCBeginTime;
120 bool _recordPreGCUsage;
121 bool _recordPeakUsage;
122 bool _recordPostGCUsage;
123 bool _recordAccumulatedGCTime;
124 bool _recordGCEndTime;
125 bool _countCollection;
126 GCCause::Cause _cause;
127 public:
128 TraceMemoryManagerStats() {}
129 TraceMemoryManagerStats(GCMemoryManager* gc_memory_manager,
130 GCCause::Cause cause,
131 bool recordGCBeginTime = true,
132 bool recordPreGCUsage = true,
133 bool recordPeakUsage = true,
134 bool recordPostGCUsage = true,
135 bool recordAccumulatedGCTime = true,
136 bool recordGCEndTime = true,
137 bool countCollection = true);
138
139 void initialize(GCMemoryManager* gc_memory_manager,
140 GCCause::Cause cause,
141 bool recordGCBeginTime,
142 bool recordPreGCUsage,
143 bool recordPeakUsage,
144 bool recordPostGCUsage,
145 bool recordAccumulatedGCTime,
146 bool recordGCEndTime,
147 bool countCollection);
148
149 ~TraceMemoryManagerStats();
150 };
151
152 #endif // SHARE_VM_SERVICES_MEMORYSERVICE_HPP
|
1 /*
2 * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
85 static void track_code_cache_memory_usage() {
86 // Track memory pool usage of all CodeCache memory pools
87 for (int i = 0; i < _code_heap_pools->length(); ++i) {
88 track_memory_pool_usage(_code_heap_pools->at(i));
89 }
90 }
91 static void track_metaspace_memory_usage() {
92 track_memory_pool_usage(_metaspace_pool);
93 }
94 static void track_compressed_class_memory_usage() {
95 track_memory_pool_usage(_compressed_class_pool);
96 }
97 static void track_memory_pool_usage(MemoryPool* pool);
98
99 static void gc_begin(GCMemoryManager* manager, bool recordGCBeginTime,
100 bool recordAccumulatedGCTime,
101 bool recordPreGCUsage, bool recordPeakUsage);
102 static void gc_end(GCMemoryManager* manager, bool recordPostGCUsage,
103 bool recordAccumulatedGCTime,
104 bool recordGCEndTime, bool countCollection,
105 GCCause::Cause cause,
106 bool allMemoryPoolsAffected);
107
108 static void oops_do(OopClosure* f);
109
110 static bool get_verbose() { return log_is_enabled(Info, gc); }
111 static bool set_verbose(bool verbose);
112
113 // Create an instance of java/lang/management/MemoryUsage
114 static Handle create_MemoryUsage_obj(MemoryUsage usage, TRAPS);
115 };
116
117 class TraceMemoryManagerStats : public StackObj {
118 private:
119 GCMemoryManager* _gc_memory_manager;
120 bool _allMemoryPoolsAffected;
121 bool _recordGCBeginTime;
122 bool _recordPreGCUsage;
123 bool _recordPeakUsage;
124 bool _recordPostGCUsage;
125 bool _recordAccumulatedGCTime;
126 bool _recordGCEndTime;
127 bool _countCollection;
128 GCCause::Cause _cause;
129 public:
130 TraceMemoryManagerStats() {}
131 TraceMemoryManagerStats(GCMemoryManager* gc_memory_manager,
132 GCCause::Cause cause,
133 bool allMemoryPoolsAffected = true,
134 bool recordGCBeginTime = true,
135 bool recordPreGCUsage = true,
136 bool recordPeakUsage = true,
137 bool recordPostGCUsage = true,
138 bool recordAccumulatedGCTime = true,
139 bool recordGCEndTime = true,
140 bool countCollection = true);
141
142 void initialize(GCMemoryManager* gc_memory_manager,
143 GCCause::Cause cause,
144 bool recordGCBeginTime,
145 bool recordPreGCUsage,
146 bool recordPeakUsage,
147 bool recordPostGCUsage,
148 bool recordAccumulatedGCTime,
149 bool recordGCEndTime,
150 bool countCollection,
151 bool allMemoryPoolsAffected = true);
152
153 ~TraceMemoryManagerStats();
154 };
155
156 #endif // SHARE_VM_SERVICES_MEMORYSERVICE_HPP
|