23 */ |
23 */ |
24 |
24 |
25 #include "precompiled.hpp" |
25 #include "precompiled.hpp" |
26 #include "classfile/systemDictionary.hpp" |
26 #include "classfile/systemDictionary.hpp" |
27 #include "classfile/vmSymbols.hpp" |
27 #include "classfile/vmSymbols.hpp" |
|
28 #include "memory/defNewGeneration.hpp" |
28 #include "memory/metaspace.hpp" |
29 #include "memory/metaspace.hpp" |
|
30 #include "memory/space.hpp" |
29 #include "oops/oop.inline.hpp" |
31 #include "oops/oop.inline.hpp" |
30 #include "runtime/handles.inline.hpp" |
32 #include "runtime/handles.inline.hpp" |
31 #include "runtime/javaCalls.hpp" |
33 #include "runtime/javaCalls.hpp" |
32 #include "runtime/orderAccess.inline.hpp" |
34 #include "runtime/orderAccess.inline.hpp" |
33 #include "services/lowMemoryDetector.hpp" |
35 #include "services/lowMemoryDetector.hpp" |
34 #include "services/management.hpp" |
36 #include "services/management.hpp" |
35 #include "services/memoryManager.hpp" |
37 #include "services/memoryManager.hpp" |
36 #include "services/memoryPool.hpp" |
38 #include "services/memoryPool.hpp" |
|
39 #include "utilities/globalDefinitions.hpp" |
37 #include "utilities/macros.hpp" |
40 #include "utilities/macros.hpp" |
38 #include "utilities/globalDefinitions.hpp" |
41 #if INCLUDE_ALL_GCS |
|
42 #include "gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp" |
|
43 #endif |
39 |
44 |
40 MemoryPool::MemoryPool(const char* name, |
45 MemoryPool::MemoryPool(const char* name, |
41 PoolType type, |
46 PoolType type, |
42 size_t init_size, |
47 size_t init_size, |
43 size_t max_size, |
48 size_t max_size, |
185 bool support_usage_threshold) : |
190 bool support_usage_threshold) : |
186 CollectedMemoryPool(name, type, space->capacity(), max_size, |
191 CollectedMemoryPool(name, type, space->capacity(), max_size, |
187 support_usage_threshold), _space(space) { |
192 support_usage_threshold), _space(space) { |
188 } |
193 } |
189 |
194 |
|
195 size_t ContiguousSpacePool::used_in_bytes() { |
|
196 return space()->used(); |
|
197 } |
|
198 |
190 MemoryUsage ContiguousSpacePool::get_memory_usage() { |
199 MemoryUsage ContiguousSpacePool::get_memory_usage() { |
191 size_t maxSize = (available_for_allocation() ? max_size() : 0); |
200 size_t maxSize = (available_for_allocation() ? max_size() : 0); |
192 size_t used = used_in_bytes(); |
201 size_t used = used_in_bytes(); |
193 size_t committed = _space->capacity(); |
202 size_t committed = _space->capacity(); |
194 |
203 |
200 PoolType type, |
209 PoolType type, |
201 size_t max_size, |
210 size_t max_size, |
202 bool support_usage_threshold) : |
211 bool support_usage_threshold) : |
203 CollectedMemoryPool(name, type, gen->from()->capacity(), max_size, |
212 CollectedMemoryPool(name, type, gen->from()->capacity(), max_size, |
204 support_usage_threshold), _gen(gen) { |
213 support_usage_threshold), _gen(gen) { |
|
214 } |
|
215 |
|
216 size_t SurvivorContiguousSpacePool::used_in_bytes() { |
|
217 return _gen->from()->used(); |
|
218 } |
|
219 |
|
220 size_t SurvivorContiguousSpacePool::committed_in_bytes() { |
|
221 return _gen->from()->capacity(); |
205 } |
222 } |
206 |
223 |
207 MemoryUsage SurvivorContiguousSpacePool::get_memory_usage() { |
224 MemoryUsage SurvivorContiguousSpacePool::get_memory_usage() { |
208 size_t maxSize = (available_for_allocation() ? max_size() : 0); |
225 size_t maxSize = (available_for_allocation() ? max_size() : 0); |
209 size_t used = used_in_bytes(); |
226 size_t used = used_in_bytes(); |
220 bool support_usage_threshold) : |
237 bool support_usage_threshold) : |
221 CollectedMemoryPool(name, type, space->capacity(), max_size, |
238 CollectedMemoryPool(name, type, space->capacity(), max_size, |
222 support_usage_threshold), _space(space) { |
239 support_usage_threshold), _space(space) { |
223 } |
240 } |
224 |
241 |
|
242 size_t CompactibleFreeListSpacePool::used_in_bytes() { |
|
243 return _space->used(); |
|
244 } |
|
245 |
225 MemoryUsage CompactibleFreeListSpacePool::get_memory_usage() { |
246 MemoryUsage CompactibleFreeListSpacePool::get_memory_usage() { |
226 size_t maxSize = (available_for_allocation() ? max_size() : 0); |
247 size_t maxSize = (available_for_allocation() ? max_size() : 0); |
227 size_t used = used_in_bytes(); |
248 size_t used = used_in_bytes(); |
228 size_t committed = _space->capacity(); |
249 size_t committed = _space->capacity(); |
229 |
250 |
237 bool support_usage_threshold) : |
258 bool support_usage_threshold) : |
238 CollectedMemoryPool(name, type, gen->capacity(), gen->max_capacity(), |
259 CollectedMemoryPool(name, type, gen->capacity(), gen->max_capacity(), |
239 support_usage_threshold), _gen(gen) { |
260 support_usage_threshold), _gen(gen) { |
240 } |
261 } |
241 |
262 |
|
263 size_t GenerationPool::used_in_bytes() { |
|
264 return _gen->used(); |
|
265 } |
|
266 |
242 MemoryUsage GenerationPool::get_memory_usage() { |
267 MemoryUsage GenerationPool::get_memory_usage() { |
243 size_t used = used_in_bytes(); |
268 size_t used = used_in_bytes(); |
244 size_t committed = _gen->capacity(); |
269 size_t committed = _gen->capacity(); |
245 size_t maxSize = (available_for_allocation() ? max_size() : 0); |
270 size_t maxSize = (available_for_allocation() ? max_size() : 0); |
246 |
271 |