psMemoryPool.hpp revision 3602:da91efe96a93
1/* 2 * Copyright (c) 2007, 2012, 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 * 23 */ 24 25#ifndef SHARE_VM_SERVICES_PSMEMORYPOOL_HPP 26#define SHARE_VM_SERVICES_PSMEMORYPOOL_HPP 27 28#ifndef SERIALGC 29#include "gc_implementation/parallelScavenge/psOldGen.hpp" 30#include "gc_implementation/parallelScavenge/psYoungGen.hpp" 31#include "gc_implementation/shared/mutableSpace.hpp" 32#include "memory/defNewGeneration.hpp" 33#include "memory/heap.hpp" 34#include "memory/space.hpp" 35#include "services/memoryPool.hpp" 36#include "services/memoryUsage.hpp" 37#endif 38 39class PSGenerationPool : public CollectedMemoryPool { 40private: 41 PSOldGen* _gen; 42 43public: 44 PSGenerationPool(PSOldGen* pool, const char* name, PoolType type, bool support_usage_threshold); 45 46 MemoryUsage get_memory_usage(); 47 size_t used_in_bytes() { return _gen->used_in_bytes(); } 48 size_t max_size() const { return _gen->reserved().byte_size(); } 49}; 50 51class EdenMutableSpacePool : public CollectedMemoryPool { 52private: 53 PSYoungGen* _gen; 54 MutableSpace* _space; 55 56public: 57 EdenMutableSpacePool(PSYoungGen* gen, 58 MutableSpace* space, 59 const char* name, 60 PoolType type, 61 bool support_usage_threshold); 62 63 MutableSpace* space() { return _space; } 64 MemoryUsage get_memory_usage(); 65 size_t used_in_bytes() { return space()->used_in_bytes(); } 66 size_t max_size() const { 67 // Eden's max_size = max_size of Young Gen - the current committed size of survivor spaces 68 return _gen->max_size() - _gen->from_space()->capacity_in_bytes() - _gen->to_space()->capacity_in_bytes(); 69 } 70}; 71 72class SurvivorMutableSpacePool : public CollectedMemoryPool { 73private: 74 PSYoungGen* _gen; 75 76public: 77 SurvivorMutableSpacePool(PSYoungGen* gen, 78 const char* name, 79 PoolType type, 80 bool support_usage_threshold); 81 82 MemoryUsage get_memory_usage(); 83 84 size_t used_in_bytes() { 85 return _gen->from_space()->used_in_bytes(); 86 } 87 size_t committed_in_bytes() { 88 return _gen->from_space()->capacity_in_bytes(); 89 } 90 size_t max_size() const { 91 // Return current committed size of the from-space 92 return _gen->from_space()->capacity_in_bytes(); 93 } 94}; 95 96#endif // SHARE_VM_SERVICES_PSMEMORYPOOL_HPP 97