annotate src/share/vm/memory/metachunk.hpp @ 20543:e7d0505c8a30

8059758: Footprint regressions with JDK-8038423 Summary: Changes in JDK-8038423 always initialize (zero out) virtual memory used for auxiliary data structures. This causes a footprint regression for G1 in startup benchmarks. This is because they do not touch that memory at all, so the operating system does not actually commit these pages. The fix is to, if the initialization value of the data structures matches the default value of just committed memory (=0), do not do anything. Reviewed-by: jwilhelm, brutisso
author tschatzl
date Fri, 10 Oct 2014 15:51:58 +0200
parents 40353abd7984
children 4ca6dc0799b6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6885
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
1 /*
12902
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
2 * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
6885
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
4 *
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
7 * published by the Free Software Foundation.
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
8 *
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
13 * accompanied this code).
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
14 *
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
18 *
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
21 * questions.
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
22 *
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
23 */
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
24 #ifndef SHARE_VM_MEMORY_METACHUNK_HPP
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
25 #define SHARE_VM_MEMORY_METACHUNK_HPP
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
26
12902
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
27 #include "memory/allocation.hpp"
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
28 #include "utilities/debug.hpp"
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
29 #include "utilities/globalDefinitions.hpp"
6885
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
30
10175
c23dbf0e8ab7 8011268: NPG: Free unused VirtualSpaceNodes
jmasa
parents: 7446
diff changeset
31 class VirtualSpaceNode;
c23dbf0e8ab7 8011268: NPG: Free unused VirtualSpaceNodes
jmasa
parents: 7446
diff changeset
32
12902
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
33 // Super class of Metablock and Metachunk to allow them to
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
34 // be put on the FreeList and in the BinaryTreeDictionary.
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
35 template <class T>
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
36 class Metabase VALUE_OBJ_CLASS_SPEC {
6885
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
37 size_t _word_size;
12902
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
38 T* _next;
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
39 T* _prev;
6885
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
40
12902
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
41 protected:
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
42 Metabase(size_t word_size) : _word_size(word_size), _next(NULL), _prev(NULL) {}
6885
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
43
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
44 public:
12902
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
45 T* next() const { return _next; }
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
46 T* prev() const { return _prev; }
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
47 void set_next(T* v) { _next = v; assert(v != this, "Boom");}
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
48 void set_prev(T* v) { _prev = v; assert(v != this, "Boom");}
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
49 void clear_next() { set_next(NULL); }
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
50 void clear_prev() { set_prev(NULL); }
6885
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
51
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
52 size_t size() const volatile { return _word_size; }
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
53 void set_size(size_t v) { _word_size = v; }
12902
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
54
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
55 void link_next(T* ptr) { set_next(ptr); }
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
56 void link_prev(T* ptr) { set_prev(ptr); }
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
57 void link_after(T* ptr) {
6885
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
58 link_next(ptr);
12902
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
59 if (ptr != NULL) ptr->link_prev((T*)this);
6885
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
60 }
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
61
12902
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
62 uintptr_t* end() const { return ((uintptr_t*) this) + size(); }
6885
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
63
12902
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
64 bool cantCoalesce() const { return false; }
6885
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
65
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
66 // Debug support
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
67 #ifdef ASSERT
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
68 void* prev_addr() const { return (void*)&_prev; }
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
69 void* next_addr() const { return (void*)&_next; }
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
70 void* size_addr() const { return (void*)&_word_size; }
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
71 #endif
12902
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
72 bool verify_chunk_in_free_list(T* tc) const { return true; }
6885
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
73 bool verify_par_locked() { return true; }
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
74
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
75 void assert_is_mangled() const {/* Don't check "\*/}
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
76
12902
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
77 bool is_free() { return true; }
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
78 };
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
79
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
80 // Metachunk - Quantum of allocation from a Virtualspace
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
81 // Metachunks are reused (when freed are put on a global freelist) and
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
82 // have no permanent association to a SpaceManager.
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
83
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
84 // +--------------+ <- end --+ --+
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
85 // | | | |
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
86 // | | | free |
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
87 // | | | |
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
88 // | | | | size | capacity
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
89 // | | | |
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
90 // | | <- top -- + |
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
91 // | | | |
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
92 // | | | used |
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
93 // | | | |
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
94 // | | | |
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
95 // +--------------+ <- bottom --+ --+
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
96
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
97 class Metachunk : public Metabase<Metachunk> {
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
98 friend class TestMetachunk;
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
99 // The VirtualSpaceNode containing this chunk.
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
100 VirtualSpaceNode* _container;
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
101
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
102 // Current allocation top.
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
103 MetaWord* _top;
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
104
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
105 DEBUG_ONLY(bool _is_tagged_free;)
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
106
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
107 MetaWord* initial_top() const { return (MetaWord*)this + overhead(); }
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
108 MetaWord* top() const { return _top; }
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
109
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
110 public:
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
111 // Metachunks are allocated out of a MetadataVirtualSpace and
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
112 // and use some of its space to describe itself (plus alignment
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
113 // considerations). Metadata is allocated in the rest of the chunk.
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
114 // This size is the overhead of maintaining the Metachunk within
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
115 // the space.
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
116
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
117 // Alignment of each allocation in the chunks.
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
118 static size_t object_alignment();
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
119
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
120 // Size of the Metachunk header, including alignment.
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
121 static size_t overhead();
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
122
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
123 Metachunk(size_t word_size , VirtualSpaceNode* container);
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
124
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
125 MetaWord* allocate(size_t word_size);
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
126
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
127 VirtualSpaceNode* container() const { return _container; }
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
128
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
129 MetaWord* bottom() const { return (MetaWord*) this; }
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
130
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
131 // Reset top to bottom so chunk can be reused.
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
132 void reset_empty() { _top = initial_top(); clear_next(); clear_prev(); }
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
133 bool is_empty() { return _top == initial_top(); }
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
134
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
135 // used (has been allocated)
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
136 // free (available for future allocations)
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
137 size_t word_size() const { return size(); }
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
138 size_t used_word_size() const;
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
139 size_t free_word_size() const;
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
140
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
141 #ifdef ASSERT
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
142 bool is_tagged_free() { return _is_tagged_free; }
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
143 void set_is_tagged_free(bool v) { _is_tagged_free = v; }
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
144 #endif
6885
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
145
17663
40353abd7984 8029178: Parallel class loading test anonymous-simple gets SIGSEGV in Metaspace::contains
coleenp
parents: 12905
diff changeset
146 bool contains(const void* ptr) { return bottom() <= ptr && ptr < _top; }
40353abd7984 8029178: Parallel class loading test anonymous-simple gets SIGSEGV in Metaspace::contains
coleenp
parents: 12905
diff changeset
147
12905
28df60a5badf 8026707: JDK-8026391 broke the optimized build target
stefank
parents: 12902
diff changeset
148 NOT_PRODUCT(void mangle();)
28df60a5badf 8026707: JDK-8026391 broke the optimized build target
stefank
parents: 12902
diff changeset
149
6885
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
150 void print_on(outputStream* st) const;
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
151 void verify();
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
152 };
12902
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
153
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
154 // Metablock is the unit of allocation from a Chunk.
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
155 //
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
156 // A Metablock may be reused by its SpaceManager but are never moved between
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
157 // SpaceManagers. There is no explicit link to the Metachunk
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
158 // from which it was allocated. Metablock may be deallocated and
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
159 // put on a freelist but the space is never freed, rather
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
160 // the Metachunk it is a part of will be deallocated when it's
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
161 // associated class loader is collected.
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
162
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
163 class Metablock : public Metabase<Metablock> {
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
164 friend class VMStructs;
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
165 public:
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
166 Metablock(size_t word_size) : Metabase<Metablock>(word_size) {}
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
167 };
bdfbb1fb19ca 8026391: The Metachunk header wastes memory
stefank
parents: 10175
diff changeset
168
6885
685df3c6f84b 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
169 #endif // SHARE_VM_MEMORY_METACHUNK_HPP