annotate src/share/vm/services/memBaseline.hpp @ 20366:dd3939fe8424

8054546: NMT2 leaks memory Summary: Fixed memory leak in NMT by baselining memory in c heap instead of an arena. Reviewed-by: coleenp, minqi
author zgu
date Wed, 20 Aug 2014 08:41:15 -0400
parents 833b0f92429a
children 417e3b8d04c5
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 // Summary information
20366
dd3939fe8424 8054546: NMT2 leaks memory
zgu
parents: 20360
diff changeset
65 MallocMemorySnapshot _malloc_memory_snapshot;
dd3939fe8424 8054546: NMT2 leaks memory
zgu
parents: 20360
diff changeset
66 VirtualMemorySnapshot _virtual_memory_snapshot;
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
67
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
68 size_t _class_count;
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
69
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
70 // Allocation sites information
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
71 // Malloc allocation sites
20366
dd3939fe8424 8054546: NMT2 leaks memory
zgu
parents: 20360
diff changeset
72 LinkedListImpl<MallocSite> _malloc_sites;
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
73
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
74 // All virtual memory allocations
20366
dd3939fe8424 8054546: NMT2 leaks memory
zgu
parents: 20360
diff changeset
75 LinkedListImpl<ReservedMemoryRegion> _virtual_memory_allocations;
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
76
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
77 // Virtual memory allocations by allocation sites, always in by_address
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
78 // order
20366
dd3939fe8424 8054546: NMT2 leaks memory
zgu
parents: 20360
diff changeset
79 LinkedListImpl<VirtualMemoryAllocationSite> _virtual_memory_sites;
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
80
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
81 SortingOrder _malloc_sites_order;
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
82 SortingOrder _virtual_memory_sites_order;
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
83
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
84 BaselineType _baseline_type;
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
85
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
86 public:
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
87 // create a memory baseline
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
88 MemBaseline():
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
89 _baseline_type(Not_baselined),
20366
dd3939fe8424 8054546: NMT2 leaks memory
zgu
parents: 20360
diff changeset
90 _class_count(0) {
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
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
93 ~MemBaseline() {
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
94 reset();
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
95 }
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
96
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
97 bool baseline(bool summaryOnly = true);
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
98
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
99 BaselineType baseline_type() const { return _baseline_type; }
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
100
20366
dd3939fe8424 8054546: NMT2 leaks memory
zgu
parents: 20360
diff changeset
101 MallocMemorySnapshot* malloc_memory_snapshot() {
dd3939fe8424 8054546: NMT2 leaks memory
zgu
parents: 20360
diff changeset
102 return &_malloc_memory_snapshot;
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
103 }
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
104
20366
dd3939fe8424 8054546: NMT2 leaks memory
zgu
parents: 20360
diff changeset
105 VirtualMemorySnapshot* virtual_memory_snapshot() {
dd3939fe8424 8054546: NMT2 leaks memory
zgu
parents: 20360
diff changeset
106 return &_virtual_memory_snapshot;
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
107 }
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
108
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
109 MallocSiteIterator malloc_sites(SortingOrder order);
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
110 VirtualMemorySiteIterator virtual_memory_sites(SortingOrder order);
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 // Virtual memory allocation iterator always returns in virtual memory
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
113 // base address order.
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
114 VirtualMemoryAllocationIterator virtual_memory_allocations() {
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
115 assert(!_virtual_memory_allocations.is_empty(), "Not detail baseline");
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
116 return VirtualMemoryAllocationIterator(_virtual_memory_allocations.head());
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
117 }
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
118
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
119 // Total reserved memory = total malloc'd memory + total reserved virtual
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
120 // memory
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
121 size_t total_reserved_memory() const {
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
122 assert(baseline_type() != Not_baselined, "Not yet baselined");
20366
dd3939fe8424 8054546: NMT2 leaks memory
zgu
parents: 20360
diff changeset
123 size_t amount = _malloc_memory_snapshot.total() +
dd3939fe8424 8054546: NMT2 leaks memory
zgu
parents: 20360
diff changeset
124 _virtual_memory_snapshot.total_reserved();
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
125 return amount;
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
126 }
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
127
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
128 // Total committed memory = total malloc'd memory + total committed
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
129 // virtual memory
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
130 size_t total_committed_memory() const {
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
131 assert(baseline_type() != Not_baselined, "Not yet baselined");
20366
dd3939fe8424 8054546: NMT2 leaks memory
zgu
parents: 20360
diff changeset
132 size_t amount = _malloc_memory_snapshot.total() +
dd3939fe8424 8054546: NMT2 leaks memory
zgu
parents: 20360
diff changeset
133 _virtual_memory_snapshot.total_committed();
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
134 return amount;
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
135 }
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
136
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
137 size_t total_arena_memory() const {
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
138 assert(baseline_type() != Not_baselined, "Not yet baselined");
20366
dd3939fe8424 8054546: NMT2 leaks memory
zgu
parents: 20360
diff changeset
139 return _malloc_memory_snapshot.total_arena();
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
140 }
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
141
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
142 size_t malloc_tracking_overhead() const {
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
143 assert(baseline_type() != Not_baselined, "Not yet baselined");
20366
dd3939fe8424 8054546: NMT2 leaks memory
zgu
parents: 20360
diff changeset
144 MemBaseline* bl = const_cast<MemBaseline*>(this);
dd3939fe8424 8054546: NMT2 leaks memory
zgu
parents: 20360
diff changeset
145 return bl->_malloc_memory_snapshot.malloc_overhead()->size();
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
146 }
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
147
20366
dd3939fe8424 8054546: NMT2 leaks memory
zgu
parents: 20360
diff changeset
148 MallocMemory* malloc_memory(MEMFLAGS flag) {
dd3939fe8424 8054546: NMT2 leaks memory
zgu
parents: 20360
diff changeset
149 assert(baseline_type() != Not_baselined, "Not yet baselined");
dd3939fe8424 8054546: NMT2 leaks memory
zgu
parents: 20360
diff changeset
150 return _malloc_memory_snapshot.by_type(flag);
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
151 }
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
152
20366
dd3939fe8424 8054546: NMT2 leaks memory
zgu
parents: 20360
diff changeset
153 VirtualMemory* virtual_memory(MEMFLAGS flag) {
dd3939fe8424 8054546: NMT2 leaks memory
zgu
parents: 20360
diff changeset
154 assert(baseline_type() != Not_baselined, "Not yet baselined");
dd3939fe8424 8054546: NMT2 leaks memory
zgu
parents: 20360
diff changeset
155 return _virtual_memory_snapshot.by_type(flag);
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
156 }
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
157
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
158
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
159 size_t class_count() const {
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
160 assert(baseline_type() != Not_baselined, "Not yet baselined");
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
161 return _class_count;
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
162 }
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
163
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
164 size_t thread_count() const {
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
165 assert(baseline_type() != Not_baselined, "Not yet baselined");
20366
dd3939fe8424 8054546: NMT2 leaks memory
zgu
parents: 20360
diff changeset
166 return _malloc_memory_snapshot.thread_count();
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
167 }
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
168
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
169 // reset the baseline for reuse
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
170 void reset() {
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
171 _baseline_type = Not_baselined;
20366
dd3939fe8424 8054546: NMT2 leaks memory
zgu
parents: 20360
diff changeset
172 _malloc_memory_snapshot.reset();
dd3939fe8424 8054546: NMT2 leaks memory
zgu
parents: 20360
diff changeset
173 _virtual_memory_snapshot.reset();
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
174 _class_count = 0;
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
175
20366
dd3939fe8424 8054546: NMT2 leaks memory
zgu
parents: 20360
diff changeset
176 _malloc_sites.clear();
dd3939fe8424 8054546: NMT2 leaks memory
zgu
parents: 20360
diff changeset
177 _virtual_memory_sites.clear();
dd3939fe8424 8054546: NMT2 leaks memory
zgu
parents: 20360
diff changeset
178 _virtual_memory_allocations.clear();
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 private:
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
182 // Baseline summary information
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
183 bool baseline_summary();
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
184
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
185 // Baseline allocation sites (detail tracking only)
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
186 bool baseline_allocation_sites();
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
187
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
188 // Aggregate virtual memory allocation by allocation sites
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
189 bool aggregate_virtual_memory_allocation_sites();
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
190
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
191 // Sorting allocation sites in different orders
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
192 // Sort allocation sites in size order
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
193 void malloc_sites_to_size_order();
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
194 // Sort allocation sites in call site address order
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
195 void malloc_sites_to_allocation_site_order();
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
196
20360
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
197 // Sort allocation sites in reserved size order
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
198 void virtual_memory_sites_to_size_order();
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
199 // Sort allocation sites in call site address order
833b0f92429a 8046598: Scalable Native memory tracking development
zgu
parents: 10148
diff changeset
200 void virtual_memory_sites_to_reservation_site_order();
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 #endif // INCLUDE_NMT
6197
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
204
d2a62e0f25eb 6995781: Native Memory Tracking (Phase 1)
zgu
parents:
diff changeset
205 #endif // SHARE_VM_SERVICES_MEM_BASELINE_HPP