Mercurial > hg > graal-jvmci-8
comparison src/share/vm/services/g1MemoryPool.cpp @ 1089:db0d5eba9d20
6815790: G1: Missing MemoryPoolMXBeans with -XX:+UseG1GC
Summary: It introduces the necessary memory pools for G1.
Reviewed-by: mchung, ysr
author | tonyp |
---|---|
date | Fri, 20 Nov 2009 14:47:01 -0500 |
parents | |
children | ed52bcc32739 |
comparison
equal
deleted
inserted
replaced
1088:3fc996d4edd2 | 1089:db0d5eba9d20 |
---|---|
1 /* | |
2 * Copyright (c) 2007 Sun Microsystems, Inc. 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, | |
20 * CA 95054 USA or visit www.sun.com if you need additional information or | |
21 * have any questions. | |
22 * | |
23 */ | |
24 | |
25 # include "incls/_precompiled.incl" | |
26 # include "incls/_g1MemoryPool.cpp.incl" | |
27 | |
28 G1MemoryPoolSuper::G1MemoryPoolSuper(G1CollectedHeap* g1h, | |
29 const char* name, | |
30 size_t init_size, | |
31 size_t max_size, | |
32 bool support_usage_threshold) : | |
33 _g1h(g1h), CollectedMemoryPool(name, | |
34 MemoryPool::Heap, | |
35 init_size, | |
36 max_size, | |
37 support_usage_threshold) { | |
38 assert(UseG1GC, "sanity"); | |
39 } | |
40 | |
41 // See the comment at the top of g1MemoryPool.hpp | |
42 size_t G1MemoryPoolSuper::eden_space_committed(G1CollectedHeap* g1h) { | |
43 return eden_space_used(g1h); | |
44 } | |
45 | |
46 // See the comment at the top of g1MemoryPool.hpp | |
47 size_t G1MemoryPoolSuper::eden_space_used(G1CollectedHeap* g1h) { | |
48 size_t young_list_length = g1h->young_list_length(); | |
49 size_t eden_used = young_list_length * HeapRegion::GrainBytes; | |
50 size_t survivor_used = survivor_space_used(g1h); | |
51 eden_used = subtract_up_to_zero(eden_used, survivor_used); | |
52 return eden_used; | |
53 } | |
54 | |
55 // See the comment at the top of g1MemoryPool.hpp | |
56 size_t G1MemoryPoolSuper::eden_space_max(G1CollectedHeap* g1h) { | |
57 return eden_space_committed(g1h); | |
58 } | |
59 | |
60 // See the comment at the top of g1MemoryPool.hpp | |
61 size_t G1MemoryPoolSuper::survivor_space_committed(G1CollectedHeap* g1h) { | |
62 return survivor_space_used(g1h); | |
63 } | |
64 | |
65 // See the comment at the top of g1MemoryPool.hpp | |
66 size_t G1MemoryPoolSuper::survivor_space_used(G1CollectedHeap* g1h) { | |
67 size_t survivor_num = g1h->g1_policy()->recorded_survivor_regions(); | |
68 size_t survivor_used = survivor_num * HeapRegion::GrainBytes; | |
69 return survivor_used; | |
70 } | |
71 | |
72 // See the comment at the top of g1MemoryPool.hpp | |
73 size_t G1MemoryPoolSuper::survivor_space_max(G1CollectedHeap* g1h) { | |
74 return survivor_space_committed(g1h); | |
75 } | |
76 | |
77 // See the comment at the top of g1MemoryPool.hpp | |
78 size_t G1MemoryPoolSuper::old_space_committed(G1CollectedHeap* g1h) { | |
79 size_t committed = overall_committed(g1h); | |
80 size_t eden_committed = eden_space_committed(g1h); | |
81 size_t survivor_committed = survivor_space_committed(g1h); | |
82 committed = subtract_up_to_zero(committed, eden_committed); | |
83 committed = subtract_up_to_zero(committed, survivor_committed); | |
84 return committed; | |
85 } | |
86 | |
87 // See the comment at the top of g1MemoryPool.hpp | |
88 size_t G1MemoryPoolSuper::old_space_used(G1CollectedHeap* g1h) { | |
89 size_t used = overall_used(g1h); | |
90 size_t eden_used = eden_space_used(g1h); | |
91 size_t survivor_used = survivor_space_used(g1h); | |
92 used = subtract_up_to_zero(used, eden_used); | |
93 used = subtract_up_to_zero(used, survivor_used); | |
94 return used; | |
95 } | |
96 | |
97 // See the comment at the top of g1MemoryPool.hpp | |
98 size_t G1MemoryPoolSuper::old_space_max(G1CollectedHeap* g1h) { | |
99 size_t max = g1h->g1_reserved_obj_bytes(); | |
100 size_t eden_max = eden_space_max(g1h); | |
101 size_t survivor_max = survivor_space_max(g1h); | |
102 max = subtract_up_to_zero(max, eden_max); | |
103 max = subtract_up_to_zero(max, survivor_max); | |
104 return max; | |
105 } | |
106 | |
107 G1EdenPool::G1EdenPool(G1CollectedHeap* g1h) : | |
108 G1MemoryPoolSuper(g1h, | |
109 "G1 Eden", | |
110 eden_space_committed(g1h), /* init_size */ | |
111 eden_space_max(g1h), /* max_size */ | |
112 false /* support_usage_threshold */) { | |
113 } | |
114 | |
115 MemoryUsage G1EdenPool::get_memory_usage() { | |
116 size_t maxSize = max_size(); | |
117 size_t used = used_in_bytes(); | |
118 size_t committed = eden_space_committed(); | |
119 | |
120 return MemoryUsage(initial_size(), used, committed, maxSize); | |
121 } | |
122 | |
123 G1SurvivorPool::G1SurvivorPool(G1CollectedHeap* g1h) : | |
124 G1MemoryPoolSuper(g1h, | |
125 "G1 Survivor", | |
126 survivor_space_committed(g1h), /* init_size */ | |
127 survivor_space_max(g1h), /* max_size */ | |
128 false /* support_usage_threshold */) { | |
129 } | |
130 | |
131 MemoryUsage G1SurvivorPool::get_memory_usage() { | |
132 size_t maxSize = max_size(); | |
133 size_t used = used_in_bytes(); | |
134 size_t committed = survivor_space_committed(); | |
135 | |
136 return MemoryUsage(initial_size(), used, committed, maxSize); | |
137 } | |
138 | |
139 G1OldGenPool::G1OldGenPool(G1CollectedHeap* g1h) : | |
140 G1MemoryPoolSuper(g1h, | |
141 "G1 Old Gen", | |
142 old_space_committed(g1h), /* init_size */ | |
143 old_space_max(g1h), /* max_size */ | |
144 true /* support_usage_threshold */) { | |
145 } | |
146 | |
147 MemoryUsage G1OldGenPool::get_memory_usage() { | |
148 size_t maxSize = max_size(); | |
149 size_t used = used_in_bytes(); | |
150 size_t committed = old_space_committed(); | |
151 | |
152 return MemoryUsage(initial_size(), used, committed, maxSize); | |
153 } |