1 /*
2  * Copyright (c) 2007, 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  *
23  */
24 
25 #include "precompiled.hpp"
26 #include "gc/g1/g1CollectedHeap.hpp"
27 #include "gc/g1/g1MemoryPool.hpp"
28 #include "gc/g1/heapRegion.hpp"
29 
G1MemoryPoolSuper(G1CollectedHeap * g1h,const char * name,size_t init_size,size_t max_size,bool support_usage_threshold)30 G1MemoryPoolSuper::G1MemoryPoolSuper(G1CollectedHeap* g1h,
31                                      const char* name,
32                                      size_t init_size,
33                                      size_t max_size,
34                                      bool support_usage_threshold) :
35   CollectedMemoryPool(name,
36                       init_size,
37                       max_size,
38                       support_usage_threshold),
39   _g1mm(g1h->g1mm()) {
40   assert(UseG1GC, "sanity");
41 }
42 
G1EdenPool(G1CollectedHeap * g1h,size_t initial_size)43 G1EdenPool::G1EdenPool(G1CollectedHeap* g1h, size_t initial_size) :
44   G1MemoryPoolSuper(g1h,
45                     "G1 Eden Space",
46                     initial_size,
47                     MemoryUsage::undefined_size(),
48                     false /* support_usage_threshold */) { }
49 
get_memory_usage()50 MemoryUsage G1EdenPool::get_memory_usage() {
51   return _g1mm->eden_space_memory_usage(initial_size(), max_size());
52 }
53 
G1SurvivorPool(G1CollectedHeap * g1h,size_t initial_size)54 G1SurvivorPool::G1SurvivorPool(G1CollectedHeap* g1h, size_t initial_size) :
55   G1MemoryPoolSuper(g1h,
56                     "G1 Survivor Space",
57                     initial_size,
58                     MemoryUsage::undefined_size(),
59                     false /* support_usage_threshold */) { }
60 
get_memory_usage()61 MemoryUsage G1SurvivorPool::get_memory_usage() {
62   return _g1mm->survivor_space_memory_usage(initial_size(), max_size());
63 }
64 
G1OldGenPool(G1CollectedHeap * g1h,size_t initial_size,size_t max_size)65 G1OldGenPool::G1OldGenPool(G1CollectedHeap* g1h, size_t initial_size, size_t max_size) :
66   G1MemoryPoolSuper(g1h,
67                     "G1 Old Gen",
68                     initial_size,
69                     max_size,
70                     true /* support_usage_threshold */) { }
71 
get_memory_usage()72 MemoryUsage G1OldGenPool::get_memory_usage() {
73   return _g1mm->old_gen_memory_usage(initial_size(), max_size());
74 }
75