annotate src/share/vm/gc_implementation/shared/allocationStats.hpp @ 10374:87c64c0438fb

6976350: G1: deal with fragmentation while copying objects during GC Summary: Create G1ParGCAllocBufferContainer to contain two buffers instead of previously using one buffer, in order to hold the first priority buffer longer. Thus, when some large objects hits the value of free space left in the first priority buffer it has an alternative to fit in the second priority buffer while the first priority buffer is given more chances to try allocating smaller objects. Overall, it will improve heap space efficiency. Reviewed-by: johnc, jmasa, brutisso Contributed-by: tamao <tao.mao@oracle.com>
author tamao
date Mon, 03 Jun 2013 14:37:13 -0700
parents db9981fd3124
children de88570fabfc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
a61af66fc99e Initial load
duke
parents:
diff changeset
1 /*
6842
b9a9ed0f8eeb 7197424: update copyright year to match last edit in jdk8 hotspot repository
mikael
parents: 6028
diff changeset
2 * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
a61af66fc99e Initial load
duke
parents:
diff changeset
4 *
a61af66fc99e Initial load
duke
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
a61af66fc99e Initial load
duke
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
a61af66fc99e Initial load
duke
parents:
diff changeset
7 * published by the Free Software Foundation.
a61af66fc99e Initial load
duke
parents:
diff changeset
8 *
a61af66fc99e Initial load
duke
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
a61af66fc99e Initial load
duke
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
a61af66fc99e Initial load
duke
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
a61af66fc99e Initial load
duke
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
a61af66fc99e Initial load
duke
parents:
diff changeset
13 * accompanied this code).
a61af66fc99e Initial load
duke
parents:
diff changeset
14 *
a61af66fc99e Initial load
duke
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
a61af66fc99e Initial load
duke
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
a61af66fc99e Initial load
duke
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
a61af66fc99e Initial load
duke
parents:
diff changeset
18 *
1552
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 1145
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 1145
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 1145
diff changeset
21 * questions.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
22 *
a61af66fc99e Initial load
duke
parents:
diff changeset
23 */
a61af66fc99e Initial load
duke
parents:
diff changeset
24
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
25 #ifndef SHARE_VM_GC_IMPLEMENTATION_SHARED_ALLOCATIONSTATS_HPP
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
26 #define SHARE_VM_GC_IMPLEMENTATION_SHARED_ALLOCATIONSTATS_HPP
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
27
8001
db9981fd3124 8005915: Unify SERIALGC and INCLUDE_ALTERNATE_GCS
jprovino
parents: 6842
diff changeset
28 #include "utilities/macros.hpp"
db9981fd3124 8005915: Unify SERIALGC and INCLUDE_ALTERNATE_GCS
jprovino
parents: 6842
diff changeset
29 #if INCLUDE_ALL_GCS
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
30 #include "gc_implementation/shared/gcUtil.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
31 #include "memory/allocation.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
32 #include "utilities/globalDefinitions.hpp"
8001
db9981fd3124 8005915: Unify SERIALGC and INCLUDE_ALTERNATE_GCS
jprovino
parents: 6842
diff changeset
33 #endif // INCLUDE_ALL_GCS
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
34
0
a61af66fc99e Initial load
duke
parents:
diff changeset
35 class AllocationStats VALUE_OBJ_CLASS_SPEC {
a61af66fc99e Initial load
duke
parents:
diff changeset
36 // A duration threshold (in ms) used to filter
a61af66fc99e Initial load
duke
parents:
diff changeset
37 // possibly unreliable samples.
a61af66fc99e Initial load
duke
parents:
diff changeset
38 static float _threshold;
a61af66fc99e Initial load
duke
parents:
diff changeset
39
a61af66fc99e Initial load
duke
parents:
diff changeset
40 // We measure the demand between the end of the previous sweep and
a61af66fc99e Initial load
duke
parents:
diff changeset
41 // beginning of this sweep:
a61af66fc99e Initial load
duke
parents:
diff changeset
42 // Count(end_last_sweep) - Count(start_this_sweep)
6028
f69a5d43dc19 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
jmasa
parents: 3775
diff changeset
43 // + split_births(between) - split_deaths(between)
1145
e018e6884bd8 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 196
diff changeset
44 // The above number divided by the time since the end of the
0
a61af66fc99e Initial load
duke
parents:
diff changeset
45 // previous sweep gives us a time rate of demand for blocks
a61af66fc99e Initial load
duke
parents:
diff changeset
46 // of this size. We compute a padded average of this rate as
a61af66fc99e Initial load
duke
parents:
diff changeset
47 // our current estimate for the time rate of demand for blocks
a61af66fc99e Initial load
duke
parents:
diff changeset
48 // of this size. Similarly, we keep a padded average for the time
a61af66fc99e Initial load
duke
parents:
diff changeset
49 // between sweeps. Our current estimate for demand for blocks of
a61af66fc99e Initial load
duke
parents:
diff changeset
50 // this size is then simply computed as the product of these two
a61af66fc99e Initial load
duke
parents:
diff changeset
51 // estimates.
a61af66fc99e Initial load
duke
parents:
diff changeset
52 AdaptivePaddedAverage _demand_rate_estimate;
a61af66fc99e Initial load
duke
parents:
diff changeset
53
1145
e018e6884bd8 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 196
diff changeset
54 ssize_t _desired; // Demand stimate computed as described above
6028
f69a5d43dc19 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
jmasa
parents: 3775
diff changeset
55 ssize_t _coal_desired; // desired +/- small-percent for tuning coalescing
0
a61af66fc99e Initial load
duke
parents:
diff changeset
56
a61af66fc99e Initial load
duke
parents:
diff changeset
57 ssize_t _surplus; // count - (desired +/- small-percent),
a61af66fc99e Initial load
duke
parents:
diff changeset
58 // used to tune splitting in best fit
6028
f69a5d43dc19 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
jmasa
parents: 3775
diff changeset
59 ssize_t _bfr_surp; // surplus at start of current sweep
f69a5d43dc19 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
jmasa
parents: 3775
diff changeset
60 ssize_t _prev_sweep; // count from end of previous sweep
f69a5d43dc19 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
jmasa
parents: 3775
diff changeset
61 ssize_t _before_sweep; // count from before current sweep
f69a5d43dc19 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
jmasa
parents: 3775
diff changeset
62 ssize_t _coal_births; // additional chunks from coalescing
f69a5d43dc19 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
jmasa
parents: 3775
diff changeset
63 ssize_t _coal_deaths; // loss from coalescing
f69a5d43dc19 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
jmasa
parents: 3775
diff changeset
64 ssize_t _split_births; // additional chunks from splitting
f69a5d43dc19 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
jmasa
parents: 3775
diff changeset
65 ssize_t _split_deaths; // loss from splitting
f69a5d43dc19 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
jmasa
parents: 3775
diff changeset
66 size_t _returned_bytes; // number of bytes returned to list.
0
a61af66fc99e Initial load
duke
parents:
diff changeset
67 public:
1145
e018e6884bd8 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 196
diff changeset
68 void initialize(bool split_birth = false) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
69 AdaptivePaddedAverage* dummy =
a61af66fc99e Initial load
duke
parents:
diff changeset
70 new (&_demand_rate_estimate) AdaptivePaddedAverage(CMS_FLSWeight,
a61af66fc99e Initial load
duke
parents:
diff changeset
71 CMS_FLSPadding);
a61af66fc99e Initial load
duke
parents:
diff changeset
72 _desired = 0;
6028
f69a5d43dc19 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
jmasa
parents: 3775
diff changeset
73 _coal_desired = 0;
0
a61af66fc99e Initial load
duke
parents:
diff changeset
74 _surplus = 0;
6028
f69a5d43dc19 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
jmasa
parents: 3775
diff changeset
75 _bfr_surp = 0;
f69a5d43dc19 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
jmasa
parents: 3775
diff changeset
76 _prev_sweep = 0;
f69a5d43dc19 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
jmasa
parents: 3775
diff changeset
77 _before_sweep = 0;
f69a5d43dc19 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
jmasa
parents: 3775
diff changeset
78 _coal_births = 0;
f69a5d43dc19 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
jmasa
parents: 3775
diff changeset
79 _coal_deaths = 0;
f69a5d43dc19 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
jmasa
parents: 3775
diff changeset
80 _split_births = (split_birth ? 1 : 0);
f69a5d43dc19 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
jmasa
parents: 3775
diff changeset
81 _split_deaths = 0;
f69a5d43dc19 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
jmasa
parents: 3775
diff changeset
82 _returned_bytes = 0;
0
a61af66fc99e Initial load
duke
parents:
diff changeset
83 }
a61af66fc99e Initial load
duke
parents:
diff changeset
84
a61af66fc99e Initial load
duke
parents:
diff changeset
85 AllocationStats() {
a61af66fc99e Initial load
duke
parents:
diff changeset
86 initialize();
a61af66fc99e Initial load
duke
parents:
diff changeset
87 }
1145
e018e6884bd8 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 196
diff changeset
88
0
a61af66fc99e Initial load
duke
parents:
diff changeset
89 // The rate estimate is in blocks per second.
a61af66fc99e Initial load
duke
parents:
diff changeset
90 void compute_desired(size_t count,
a61af66fc99e Initial load
duke
parents:
diff changeset
91 float inter_sweep_current,
1145
e018e6884bd8 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 196
diff changeset
92 float inter_sweep_estimate,
e018e6884bd8 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 196
diff changeset
93 float intra_sweep_estimate) {
0
a61af66fc99e Initial load
duke
parents:
diff changeset
94 // If the latest inter-sweep time is below our granularity
a61af66fc99e Initial load
duke
parents:
diff changeset
95 // of measurement, we may call in here with
a61af66fc99e Initial load
duke
parents:
diff changeset
96 // inter_sweep_current == 0. However, even for suitably small
a61af66fc99e Initial load
duke
parents:
diff changeset
97 // but non-zero inter-sweep durations, we may not trust the accuracy
a61af66fc99e Initial load
duke
parents:
diff changeset
98 // of accumulated data, since it has not been "integrated"
a61af66fc99e Initial load
duke
parents:
diff changeset
99 // (read "low-pass-filtered") long enough, and would be
a61af66fc99e Initial load
duke
parents:
diff changeset
100 // vulnerable to noisy glitches. In such cases, we
a61af66fc99e Initial load
duke
parents:
diff changeset
101 // ignore the current sample and use currently available
a61af66fc99e Initial load
duke
parents:
diff changeset
102 // historical estimates.
6028
f69a5d43dc19 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
jmasa
parents: 3775
diff changeset
103 assert(prev_sweep() + split_births() + coal_births() // "Total Production Stock"
f69a5d43dc19 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
jmasa
parents: 3775
diff changeset
104 >= split_deaths() + coal_deaths() + (ssize_t)count, // "Current stock + depletion"
3775
f75137faa7fe 6916968: CMS: freeList.cpp:304 assert(_allocation_stats.prevSweep() + ..., "Conservation Principle")
ysr
parents: 3256
diff changeset
105 "Conservation Principle");
0
a61af66fc99e Initial load
duke
parents:
diff changeset
106 if (inter_sweep_current > _threshold) {
6028
f69a5d43dc19 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
jmasa
parents: 3775
diff changeset
107 ssize_t demand = prev_sweep() - (ssize_t)count + split_births() + coal_births()
f69a5d43dc19 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
jmasa
parents: 3775
diff changeset
108 - split_deaths() - coal_deaths();
3775
f75137faa7fe 6916968: CMS: freeList.cpp:304 assert(_allocation_stats.prevSweep() + ..., "Conservation Principle")
ysr
parents: 3256
diff changeset
109 assert(demand >= 0,
f75137faa7fe 6916968: CMS: freeList.cpp:304 assert(_allocation_stats.prevSweep() + ..., "Conservation Principle")
ysr
parents: 3256
diff changeset
110 err_msg("Demand (" SSIZE_FORMAT ") should be non-negative for "
f75137faa7fe 6916968: CMS: freeList.cpp:304 assert(_allocation_stats.prevSweep() + ..., "Conservation Principle")
ysr
parents: 3256
diff changeset
111 PTR_FORMAT " (size=" SIZE_FORMAT ")",
f75137faa7fe 6916968: CMS: freeList.cpp:304 assert(_allocation_stats.prevSweep() + ..., "Conservation Principle")
ysr
parents: 3256
diff changeset
112 demand, this, count));
1145
e018e6884bd8 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 196
diff changeset
113 // Defensive: adjust for imprecision in event counting
e018e6884bd8 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 196
diff changeset
114 if (demand < 0) {
e018e6884bd8 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 196
diff changeset
115 demand = 0;
e018e6884bd8 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 196
diff changeset
116 }
e018e6884bd8 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 196
diff changeset
117 float old_rate = _demand_rate_estimate.padded_average();
0
a61af66fc99e Initial load
duke
parents:
diff changeset
118 float rate = ((float)demand)/inter_sweep_current;
a61af66fc99e Initial load
duke
parents:
diff changeset
119 _demand_rate_estimate.sample(rate);
1145
e018e6884bd8 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 196
diff changeset
120 float new_rate = _demand_rate_estimate.padded_average();
e018e6884bd8 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 196
diff changeset
121 ssize_t old_desired = _desired;
2186
e49cfa28f585 6999988: CMS: Increased fragmentation leading to promotion failure after CR#6631166 got implemented
ysr
parents: 1972
diff changeset
122 float delta_ise = (CMSExtrapolateSweep ? intra_sweep_estimate : 0.0);
e49cfa28f585 6999988: CMS: Increased fragmentation leading to promotion failure after CR#6631166 got implemented
ysr
parents: 1972
diff changeset
123 _desired = (ssize_t)(new_rate * (inter_sweep_estimate + delta_ise));
1145
e018e6884bd8 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 196
diff changeset
124 if (PrintFLSStatistics > 1) {
e018e6884bd8 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 196
diff changeset
125 gclog_or_tty->print_cr("demand: %d, old_rate: %f, current_rate: %f, new_rate: %f, old_desired: %d, new_desired: %d",
e018e6884bd8 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 196
diff changeset
126 demand, old_rate, rate, new_rate, old_desired, _desired);
e018e6884bd8 6631166: CMS: better heuristics when combatting fragmentation
ysr
parents: 196
diff changeset
127 }
0
a61af66fc99e Initial load
duke
parents:
diff changeset
128 }
a61af66fc99e Initial load
duke
parents:
diff changeset
129 }
a61af66fc99e Initial load
duke
parents:
diff changeset
130
a61af66fc99e Initial load
duke
parents:
diff changeset
131 ssize_t desired() const { return _desired; }
12
6432c3bb6240 6668743: CMS: Consolidate block statistics reporting code
ysr
parents: 0
diff changeset
132 void set_desired(ssize_t v) { _desired = v; }
6432c3bb6240 6668743: CMS: Consolidate block statistics reporting code
ysr
parents: 0
diff changeset
133
6028
f69a5d43dc19 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
jmasa
parents: 3775
diff changeset
134 ssize_t coal_desired() const { return _coal_desired; }
f69a5d43dc19 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
jmasa
parents: 3775
diff changeset
135 void set_coal_desired(ssize_t v) { _coal_desired = v; }
0
a61af66fc99e Initial load
duke
parents:
diff changeset
136
a61af66fc99e Initial load
duke
parents:
diff changeset
137 ssize_t surplus() const { return _surplus; }
a61af66fc99e Initial load
duke
parents:
diff changeset
138 void set_surplus(ssize_t v) { _surplus = v; }
a61af66fc99e Initial load
duke
parents:
diff changeset
139 void increment_surplus() { _surplus++; }
a61af66fc99e Initial load
duke
parents:
diff changeset
140 void decrement_surplus() { _surplus--; }
a61af66fc99e Initial load
duke
parents:
diff changeset
141
6028
f69a5d43dc19 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
jmasa
parents: 3775
diff changeset
142 ssize_t bfr_surp() const { return _bfr_surp; }
f69a5d43dc19 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
jmasa
parents: 3775
diff changeset
143 void set_bfr_surp(ssize_t v) { _bfr_surp = v; }
f69a5d43dc19 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
jmasa
parents: 3775
diff changeset
144 ssize_t prev_sweep() const { return _prev_sweep; }
f69a5d43dc19 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
jmasa
parents: 3775
diff changeset
145 void set_prev_sweep(ssize_t v) { _prev_sweep = v; }
f69a5d43dc19 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
jmasa
parents: 3775
diff changeset
146 ssize_t before_sweep() const { return _before_sweep; }
f69a5d43dc19 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
jmasa
parents: 3775
diff changeset
147 void set_before_sweep(ssize_t v) { _before_sweep = v; }
0
a61af66fc99e Initial load
duke
parents:
diff changeset
148
6028
f69a5d43dc19 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
jmasa
parents: 3775
diff changeset
149 ssize_t coal_births() const { return _coal_births; }
f69a5d43dc19 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
jmasa
parents: 3775
diff changeset
150 void set_coal_births(ssize_t v) { _coal_births = v; }
f69a5d43dc19 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
jmasa
parents: 3775
diff changeset
151 void increment_coal_births() { _coal_births++; }
0
a61af66fc99e Initial load
duke
parents:
diff changeset
152
6028
f69a5d43dc19 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
jmasa
parents: 3775
diff changeset
153 ssize_t coal_deaths() const { return _coal_deaths; }
f69a5d43dc19 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
jmasa
parents: 3775
diff changeset
154 void set_coal_deaths(ssize_t v) { _coal_deaths = v; }
f69a5d43dc19 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
jmasa
parents: 3775
diff changeset
155 void increment_coal_deaths() { _coal_deaths++; }
0
a61af66fc99e Initial load
duke
parents:
diff changeset
156
6028
f69a5d43dc19 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
jmasa
parents: 3775
diff changeset
157 ssize_t split_births() const { return _split_births; }
f69a5d43dc19 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
jmasa
parents: 3775
diff changeset
158 void set_split_births(ssize_t v) { _split_births = v; }
f69a5d43dc19 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
jmasa
parents: 3775
diff changeset
159 void increment_split_births() { _split_births++; }
0
a61af66fc99e Initial load
duke
parents:
diff changeset
160
6028
f69a5d43dc19 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
jmasa
parents: 3775
diff changeset
161 ssize_t split_deaths() const { return _split_deaths; }
f69a5d43dc19 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
jmasa
parents: 3775
diff changeset
162 void set_split_deaths(ssize_t v) { _split_deaths = v; }
f69a5d43dc19 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
jmasa
parents: 3775
diff changeset
163 void increment_split_deaths() { _split_deaths++; }
0
a61af66fc99e Initial load
duke
parents:
diff changeset
164
a61af66fc99e Initial load
duke
parents:
diff changeset
165 NOT_PRODUCT(
6028
f69a5d43dc19 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
jmasa
parents: 3775
diff changeset
166 size_t returned_bytes() const { return _returned_bytes; }
f69a5d43dc19 7164144: Fix variable naming style in freeBlockDictionary.* and binaryTreeDictionary*
jmasa
parents: 3775
diff changeset
167 void set_returned_bytes(size_t v) { _returned_bytes = v; }
0
a61af66fc99e Initial load
duke
parents:
diff changeset
168 )
a61af66fc99e Initial load
duke
parents:
diff changeset
169 };
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
170
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1552
diff changeset
171 #endif // SHARE_VM_GC_IMPLEMENTATION_SHARED_ALLOCATIONSTATS_HPP