annotate src/share/vm/services/memBaseline.hpp @ 20364:c6211b707068

8055007: NMT2: emptyStack missing in minimal build Summary: Refactored emptyStack to a static member of NativeCallStack, which is accessible in minimal build. Reviewed-by: coleenp, dholmes
author zgu
date Tue, 19 Aug 2014 08:34:25 -0400
parents 833b0f92429a
children dd3939fe8424
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
1 /*
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
2 * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
4 *
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
7 * published by the Free Software Foundation.
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
8 *
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
13 * accompanied this code).
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
14 *
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
18 *
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
21 * questions.
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
22 *
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
23 */
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
24
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
25 #ifndef SHARE_VM_SERVICES_MEM_BASELINE_HPP
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
26 #define SHARE_VM_SERVICES_MEM_BASELINE_HPP
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
27
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
28 #if INCLUDE_NMT
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
29
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
30 #include "memory/allocation.hpp"
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
31 #include "runtime/mutex.hpp"
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
32 #include "services/mallocSiteTable.hpp"
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
33 #include "services/mallocTracker.hpp"
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
34 #include "services/nmtCommon.hpp"
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
35 #include "services/virtualMemoryTracker.hpp"
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
36 #include "utilities/linkedlist.hpp"
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
37
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
38 typedef LinkedListIterator<MallocSite> MallocSiteIterator;
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
39 typedef LinkedListIterator<VirtualMemoryAllocationSite> VirtualMemorySiteIterator;
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
40 typedef LinkedListIterator<ReservedMemoryRegion> VirtualMemoryAllocationIterator;
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
41
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
42 /*
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
43 * Baseline a memory snapshot
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
44 */
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
45 class MemBaseline VALUE_OBJ_CLASS_SPEC {
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
46 public:
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
47 enum BaselineThreshold {
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
48 SIZE_THRESHOLD = K // Only allocation size over this threshold will be baselined.
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
49 };
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
50
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
51 enum BaselineType {
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
52 Not_baselined,
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
53 Summary_baselined,
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
54 Detail_baselined
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
55 };
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
56
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
57 enum SortingOrder {
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
58 by_address, // by memory address
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
59 by_size, // by memory size
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
60 by_site // by call site where the memory is allocated from
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
61 };
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
62
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
63 private:
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
64 // All baseline data is stored in this arena
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
65 Arena* _arena;
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
66
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
67 // Summary information
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
68 MallocMemorySnapshot* _malloc_memory_snapshot;
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
69 VirtualMemorySnapshot* _virtual_memory_snapshot;
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
70
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
71 size_t _class_count;
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
72
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
73 // Allocation sites information
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
74 // Malloc allocation sites
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
75 LinkedListImpl<MallocSite, ResourceObj::ARENA>
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
76 _malloc_sites;
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
77
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
78 // All virtual memory allocations
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
79 LinkedListImpl<ReservedMemoryRegion, ResourceObj::ARENA>
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
80 _virtual_memory_allocations;
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
81
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
82 // Virtual memory allocations by allocation sites, always in by_address
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
83 // order
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
84 LinkedListImpl<VirtualMemoryAllocationSite, ResourceObj::ARENA>
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
85 _virtual_memory_sites;
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
86
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
87 SortingOrder _malloc_sites_order;
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
88 SortingOrder _virtual_memory_sites_order;
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
89
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
90 BaselineType _baseline_type;
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
91
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
92 public:
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
93 // create a memory baseline
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
94 MemBaseline():
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
95 _baseline_type(Not_baselined),
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
96 _class_count(0),
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
97 _arena(NULL),
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
98 _malloc_memory_snapshot(NULL),
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
99 _virtual_memory_snapshot(NULL),
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
100 _malloc_sites(NULL) {
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
101 }
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
102
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
103 ~MemBaseline() {
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
104 reset();
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
105 if (_arena != NULL) {
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
106 delete _arena;
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
107 }
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
108 }
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
109
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
110 bool baseline(bool summaryOnly = true);
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
111
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
112 BaselineType baseline_type() const { return _baseline_type; }
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
113
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
114 MallocMemorySnapshot* malloc_memory_snapshot() const {
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
115 return _malloc_memory_snapshot;
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
116 }
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
117
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
118 VirtualMemorySnapshot* virtual_memory_snapshot() const {
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
119 return _virtual_memory_snapshot;
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
120 }
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
121
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
122 MallocSiteIterator malloc_sites(SortingOrder order);
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
123 VirtualMemorySiteIterator virtual_memory_sites(SortingOrder order);
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
124
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
125 // Virtual memory allocation iterator always returns in virtual memory
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
126 // base address order.
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
127 VirtualMemoryAllocationIterator virtual_memory_allocations() {
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
128 assert(!_virtual_memory_allocations.is_empty(), "Not detail baseline");
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
129 return VirtualMemoryAllocationIterator(_virtual_memory_allocations.head());
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
130 }
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
131
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
132 // Total reserved memory = total malloc'd memory + total reserved virtual
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
133 // memory
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
134 size_t total_reserved_memory() const {
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
135 assert(baseline_type() != Not_baselined, "Not yet baselined");
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
136 assert(_virtual_memory_snapshot != NULL, "No virtual memory snapshot");
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
137 assert(_malloc_memory_snapshot != NULL, "No malloc memory snapshot");
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
138 size_t amount = _malloc_memory_snapshot->total() +
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
139 _virtual_memory_snapshot->total_reserved();
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
140 return amount;
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
141 }
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
142
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
143 // Total committed memory = total malloc'd memory + total committed
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
144 // virtual memory
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
145 size_t total_committed_memory() const {
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
146 assert(baseline_type() != Not_baselined, "Not yet baselined");
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
147 assert(_virtual_memory_snapshot != NULL,
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
148 "Not a snapshot");
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
149 size_t amount = _malloc_memory_snapshot->total() +
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
150 _virtual_memory_snapshot->total_committed();
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
151 return amount;
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
152 }
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
153
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
154 size_t total_arena_memory() const {
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
155 assert(baseline_type() != Not_baselined, "Not yet baselined");
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
156 assert(_malloc_memory_snapshot != NULL, "Not yet baselined");
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
157 return _malloc_memory_snapshot->total_arena();
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
158 }
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
159
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
160 size_t malloc_tracking_overhead() const {
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
161 assert(baseline_type() != Not_baselined, "Not yet baselined");
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
162 return _malloc_memory_snapshot->malloc_overhead()->size();
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
163 }
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
164
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
165 const MallocMemory* malloc_memory(MEMFLAGS flag) const {
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
166 assert(_malloc_memory_snapshot != NULL, "Not a snapshot");
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
167 return _malloc_memory_snapshot->by_type(flag);
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
168 }
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
169
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
170 const VirtualMemory* virtual_memory(MEMFLAGS flag) const {
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
171 assert(_virtual_memory_snapshot != NULL, "Not a snapshot");
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
172 return _virtual_memory_snapshot->by_type(flag);
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
173 }
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
174
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
175
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
176 size_t class_count() const {
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
177 assert(baseline_type() != Not_baselined, "Not yet baselined");
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
178 return _class_count;
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
179 }
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
180
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
181 size_t thread_count() const {
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
182 assert(baseline_type() != Not_baselined, "Not yet baselined");
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
183 assert(_malloc_memory_snapshot != NULL, "Baselined?");
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
184 return _malloc_memory_snapshot->thread_count();
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
185 }
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
186
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
187 // reset the baseline for reuse
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
188 void reset() {
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
189 _baseline_type = Not_baselined;
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
190 _malloc_memory_snapshot = NULL;
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
191 _virtual_memory_snapshot = NULL;
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
192 _class_count = 0;
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
193
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
194 _malloc_sites = NULL;
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
195 _virtual_memory_sites = NULL;
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
196 _virtual_memory_allocations = NULL;
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
197
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
198 if (_arena != NULL) {
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
199 _arena->destruct_contents();
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
200 }
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
201 }
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
202
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
203 private:
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
204 // Baseline summary information
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
205 bool baseline_summary();
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
206
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
207 // Baseline allocation sites (detail tracking only)
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
208 bool baseline_allocation_sites();
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
209
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
210 // Aggregate virtual memory allocation by allocation sites
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
211 bool aggregate_virtual_memory_allocation_sites();
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
212
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
213 Arena* arena() { return _arena; }
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
214
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
215 // Sorting allocation sites in different orders
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
216 // Sort allocation sites in size order
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
217 void malloc_sites_to_size_order();
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
218 // Sort allocation sites in call site address order
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
219 void malloc_sites_to_allocation_site_order();
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
220
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
221 // Sort allocation sites in reserved size order
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
222 void virtual_memory_sites_to_size_order();
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
223 // Sort allocation sites in call site address order
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
224 void virtual_memory_sites_to_reservation_site_order();
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
225 };
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
226
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
227 #endif // INCLUDE_NMT
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
228
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
229 #endif // SHARE_VM_SERVICES_MEM_BASELINE_HPP