Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openjdk-multiarch-jdk8u
Path: blob/aarch64-shenandoah-jdk8u272-b10/hotspot/src/share/vm/gc_implementation/shared/gcHeapSummary.hpp
38920 views
1
/*
2
* Copyright (c) 2012, 2013, 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_GC_IMPLEMENTATION_SHARED_GCHEAPSUMMARY_HPP
26
#define SHARE_VM_GC_IMPLEMENTATION_SHARED_GCHEAPSUMMARY_HPP
27
28
#include "memory/allocation.hpp"
29
#include "memory/metaspaceChunkFreeListSummary.hpp"
30
31
class VirtualSpaceSummary : public StackObj {
32
HeapWord* _start;
33
HeapWord* _committed_end;
34
HeapWord* _reserved_end;
35
public:
36
VirtualSpaceSummary() :
37
_start(NULL), _committed_end(NULL), _reserved_end(NULL) { }
38
VirtualSpaceSummary(HeapWord* start, HeapWord* committed_end, HeapWord* reserved_end) :
39
_start(start), _committed_end(committed_end), _reserved_end(reserved_end) { }
40
41
HeapWord* start() const { return _start; }
42
HeapWord* committed_end() const { return _committed_end; }
43
HeapWord* reserved_end() const { return _reserved_end; }
44
size_t committed_size() const { return (uintptr_t)_committed_end - (uintptr_t)_start; }
45
size_t reserved_size() const { return (uintptr_t)_reserved_end - (uintptr_t)_start; }
46
};
47
48
class SpaceSummary : public StackObj {
49
HeapWord* _start;
50
HeapWord* _end;
51
size_t _used;
52
public:
53
SpaceSummary() :
54
_start(NULL), _end(NULL), _used(0) { }
55
SpaceSummary(HeapWord* start, HeapWord* end, size_t used) :
56
_start(start), _end(end), _used(used) { }
57
58
HeapWord* start() const { return _start; }
59
HeapWord* end() const { return _end; }
60
size_t used() const { return _used; }
61
size_t size() const { return (uintptr_t)_end - (uintptr_t)_start; }
62
};
63
64
class MetaspaceSizes : public StackObj {
65
size_t _committed;
66
size_t _used;
67
size_t _reserved;
68
69
public:
70
MetaspaceSizes() : _committed(0), _used(0), _reserved(0) {}
71
MetaspaceSizes(size_t committed, size_t used, size_t reserved) :
72
_committed(committed), _used(used), _reserved(reserved) {}
73
74
size_t committed() const { return _committed; }
75
size_t used() const { return _used; }
76
size_t reserved() const { return _reserved; }
77
};
78
79
class GCHeapSummary;
80
class PSHeapSummary;
81
class G1HeapSummary;
82
83
class GCHeapSummaryVisitor {
84
public:
85
virtual void visit(const GCHeapSummary* heap_summary) const = 0;
86
virtual void visit(const PSHeapSummary* heap_summary) const {}
87
virtual void visit(const G1HeapSummary* heap_summary) const {}
88
};
89
90
class GCHeapSummary : public StackObj {
91
VirtualSpaceSummary _heap;
92
size_t _used;
93
94
public:
95
GCHeapSummary() :
96
_heap(), _used(0) { }
97
GCHeapSummary(VirtualSpaceSummary& heap_space, size_t used) :
98
_heap(heap_space), _used(used) { }
99
100
const VirtualSpaceSummary& heap() const { return _heap; }
101
size_t used() const { return _used; }
102
103
virtual void accept(GCHeapSummaryVisitor* visitor) const {
104
visitor->visit(this);
105
}
106
};
107
108
class PSHeapSummary : public GCHeapSummary {
109
VirtualSpaceSummary _old;
110
SpaceSummary _old_space;
111
VirtualSpaceSummary _young;
112
SpaceSummary _eden;
113
SpaceSummary _from;
114
SpaceSummary _to;
115
public:
116
PSHeapSummary(VirtualSpaceSummary& heap_space, size_t heap_used, VirtualSpaceSummary old, SpaceSummary old_space, VirtualSpaceSummary young, SpaceSummary eden, SpaceSummary from, SpaceSummary to) :
117
GCHeapSummary(heap_space, heap_used), _old(old), _old_space(old_space), _young(young), _eden(eden), _from(from), _to(to) { }
118
const VirtualSpaceSummary& old() const { return _old; }
119
const SpaceSummary& old_space() const { return _old_space; }
120
const VirtualSpaceSummary& young() const { return _young; }
121
const SpaceSummary& eden() const { return _eden; }
122
const SpaceSummary& from() const { return _from; }
123
const SpaceSummary& to() const { return _to; }
124
125
virtual void accept(GCHeapSummaryVisitor* visitor) const {
126
visitor->visit(this);
127
}
128
};
129
130
class G1HeapSummary : public GCHeapSummary {
131
size_t _edenUsed;
132
size_t _edenCapacity;
133
size_t _survivorUsed;
134
uint _numberOfRegions;
135
public:
136
G1HeapSummary(VirtualSpaceSummary& heap_space, size_t heap_used, size_t edenUsed, size_t edenCapacity, size_t survivorUsed, uint numberOfRegions) :
137
GCHeapSummary(heap_space, heap_used), _edenUsed(edenUsed), _edenCapacity(edenCapacity), _survivorUsed(survivorUsed), _numberOfRegions(numberOfRegions) { }
138
const size_t edenUsed() const { return _edenUsed; }
139
const size_t edenCapacity() const { return _edenCapacity; }
140
const size_t survivorUsed() const { return _survivorUsed; }
141
const uint numberOfRegions() const { return _numberOfRegions; }
142
143
virtual void accept(GCHeapSummaryVisitor* visitor) const {
144
visitor->visit(this);
145
}
146
};
147
148
class MetaspaceSummary : public StackObj {
149
size_t _capacity_until_GC;
150
MetaspaceSizes _meta_space;
151
MetaspaceSizes _data_space;
152
MetaspaceSizes _class_space;
153
MetaspaceChunkFreeListSummary _metaspace_chunk_free_list_summary;
154
MetaspaceChunkFreeListSummary _class_chunk_free_list_summary;
155
156
public:
157
MetaspaceSummary() :
158
_capacity_until_GC(0),
159
_meta_space(),
160
_data_space(),
161
_class_space(),
162
_metaspace_chunk_free_list_summary(),
163
_class_chunk_free_list_summary()
164
{}
165
MetaspaceSummary(size_t capacity_until_GC,
166
const MetaspaceSizes& meta_space,
167
const MetaspaceSizes& data_space,
168
const MetaspaceSizes& class_space,
169
const MetaspaceChunkFreeListSummary& metaspace_chunk_free_list_summary,
170
const MetaspaceChunkFreeListSummary& class_chunk_free_list_summary) :
171
_capacity_until_GC(capacity_until_GC),
172
_meta_space(meta_space),
173
_data_space(data_space),
174
_class_space(class_space),
175
_metaspace_chunk_free_list_summary(metaspace_chunk_free_list_summary),
176
_class_chunk_free_list_summary(class_chunk_free_list_summary)
177
{}
178
179
size_t capacity_until_GC() const { return _capacity_until_GC; }
180
const MetaspaceSizes& meta_space() const { return _meta_space; }
181
const MetaspaceSizes& data_space() const { return _data_space; }
182
const MetaspaceSizes& class_space() const { return _class_space; }
183
184
const MetaspaceChunkFreeListSummary& metaspace_chunk_free_list_summary() const {
185
return _metaspace_chunk_free_list_summary;
186
}
187
188
const MetaspaceChunkFreeListSummary& class_chunk_free_list_summary() const {
189
return _class_chunk_free_list_summary;
190
}
191
192
};
193
194
#endif // SHARE_VM_GC_IMPLEMENTATION_SHARED_GCHEAPSUMMARY_HPP
195
196