Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openj9
Path: blob/master/runtime/j9vm/j9memcategories.c
5985 views
1
/*******************************************************************************
2
* Copyright (c) 2010, 2022 IBM Corp. and others
3
*
4
* This program and the accompanying materials are made available under
5
* the terms of the Eclipse Public License 2.0 which accompanies this
6
* distribution and is available at https://www.eclipse.org/legal/epl-2.0/
7
* or the Apache License, Version 2.0 which accompanies this distribution and
8
* is available at https://www.apache.org/licenses/LICENSE-2.0.
9
*
10
* This Source Code may also be made available under the following
11
* Secondary Licenses when the conditions for such availability set
12
* forth in the Eclipse Public License, v. 2.0 are satisfied: GNU
13
* General Public License, version 2 with the GNU Classpath
14
* Exception [1] and GNU General Public License, version 2 with the
15
* OpenJDK Assembly Exception [2].
16
*
17
* [1] https://www.gnu.org/software/classpath/license.html
18
* [2] http://openjdk.java.net/legal/assembly-exception.html
19
*
20
* SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception
21
*******************************************************************************/
22
23
/**
24
* @brief This file contains the memory categories for the SDK.
25
* The only other categories are "Unknown" and "Port library" that
26
* are maintained inside the port library itself.
27
*/
28
29
#include "j9.h"
30
#include "j9memcategories.h"
31
32
/*
33
* To add a new category:
34
* - Add a new category macro to runtime/include/j9memcategories.h
35
* - Declare the category below
36
* - Add the category to the category table.
37
* - The first category is the root, all categories in the tree must be reachable from that.
38
*/
39
40
/* Note: OMRMEM_CATEGORY_UNKNOWN and OMRMEM_CATEGORY_PORT_LIBRARY are stored inside the port library */
41
OMRMEM_CATEGORY_4_CHILDREN("JRE", J9MEM_CATEGORY_JRE, OMRMEM_CATEGORY_VM, OMRMEM_CATEGORY_JIT, J9MEM_CATEGORY_CLASS_LIBRARIES, OMRMEM_CATEGORY_UNKNOWN);
42
#if JAVA_SPEC_VERSION >= 16
43
#if defined(OMR_OPT_CUDA)
44
OMRMEM_CATEGORY_10_CHILDREN("VM", OMRMEM_CATEGORY_VM, J9MEM_CATEGORY_CLASSES, J9MEM_CATEGORY_MODULES, OMRMEM_CATEGORY_MM, OMRMEM_CATEGORY_THREADS, OMRMEM_CATEGORY_TRACE, J9MEM_CATEGORY_JVMTI, J9MEM_CATEGORY_JNI, OMRMEM_CATEGORY_CUDA, OMRMEM_CATEGORY_PORT_LIBRARY, J9MEM_CATEGORY_VM_FFI);
45
#else /* OMR_OPT_CUDA */
46
OMRMEM_CATEGORY_9_CHILDREN("VM", OMRMEM_CATEGORY_VM, J9MEM_CATEGORY_CLASSES, J9MEM_CATEGORY_MODULES, OMRMEM_CATEGORY_MM, OMRMEM_CATEGORY_THREADS, OMRMEM_CATEGORY_TRACE, J9MEM_CATEGORY_JVMTI, J9MEM_CATEGORY_JNI, OMRMEM_CATEGORY_PORT_LIBRARY, J9MEM_CATEGORY_VM_FFI);
47
#endif /* OMR_OPT_CUDA */
48
#else /* JAVA_SPEC_VERSION >= 16 */
49
#if defined(OMR_OPT_CUDA)
50
OMRMEM_CATEGORY_9_CHILDREN("VM", OMRMEM_CATEGORY_VM, J9MEM_CATEGORY_CLASSES, J9MEM_CATEGORY_MODULES, OMRMEM_CATEGORY_MM, OMRMEM_CATEGORY_THREADS, OMRMEM_CATEGORY_TRACE, J9MEM_CATEGORY_JVMTI, J9MEM_CATEGORY_JNI, OMRMEM_CATEGORY_CUDA, OMRMEM_CATEGORY_PORT_LIBRARY);
51
#else /* OMR_OPT_CUDA */
52
OMRMEM_CATEGORY_8_CHILDREN("VM", OMRMEM_CATEGORY_VM, J9MEM_CATEGORY_CLASSES, J9MEM_CATEGORY_MODULES, OMRMEM_CATEGORY_MM, OMRMEM_CATEGORY_THREADS, OMRMEM_CATEGORY_TRACE, J9MEM_CATEGORY_JVMTI, J9MEM_CATEGORY_JNI, OMRMEM_CATEGORY_PORT_LIBRARY);
53
#endif /* OMR_OPT_CUDA */
54
#endif /* JAVA_SPEC_VERSION >= 16 */
55
OMRMEM_CATEGORY_1_CHILD("Classes", J9MEM_CATEGORY_CLASSES, J9MEM_CATEGORY_CLASSES_SHC_CACHE);
56
OMRMEM_CATEGORY_NO_CHILDREN("Shared Class Cache", J9MEM_CATEGORY_CLASSES_SHC_CACHE);
57
OMRMEM_CATEGORY_1_CHILD("Memory Manager (GC)", OMRMEM_CATEGORY_MM, OMRMEM_CATEGORY_MM_RUNTIME_HEAP);
58
OMRMEM_CATEGORY_NO_CHILDREN("Java Heap", OMRMEM_CATEGORY_MM_RUNTIME_HEAP);
59
OMRMEM_CATEGORY_NO_CHILDREN("Java Stack", OMRMEM_CATEGORY_THREADS_RUNTIME_STACK);
60
OMRMEM_CATEGORY_NO_CHILDREN("Trace", OMRMEM_CATEGORY_TRACE);
61
OMRMEM_CATEGORY_2_CHILDREN("JIT", OMRMEM_CATEGORY_JIT, OMRMEM_CATEGORY_JIT_CODE_CACHE, OMRMEM_CATEGORY_JIT_DATA_CACHE);
62
OMRMEM_CATEGORY_NO_CHILDREN("JIT Code Cache", OMRMEM_CATEGORY_JIT_CODE_CACHE);
63
OMRMEM_CATEGORY_NO_CHILDREN("JIT Data Cache", OMRMEM_CATEGORY_JIT_DATA_CACHE);
64
OMRMEM_CATEGORY_1_CHILD("sun.misc.Unsafe", J9MEM_CATEGORY_SUN_MISC_UNSAFE_ALLOCATE, J9MEM_CATEGORY_SUN_MISC_UNSAFE_ALLOCATEDBB);
65
OMRMEM_CATEGORY_NO_CHILDREN("Direct Byte Buffers", J9MEM_CATEGORY_SUN_MISC_UNSAFE_ALLOCATEDBB);
66
OMRMEM_CATEGORY_2_CHILDREN("VM Class Libraries", J9MEM_CATEGORY_VM_JCL, J9MEM_CATEGORY_CUDA4J, J9MEM_CATEGORY_SUN_MISC_UNSAFE_ALLOCATE);
67
OMRMEM_CATEGORY_NO_CHILDREN("CUDA4J", J9MEM_CATEGORY_CUDA4J);
68
OMRMEM_CATEGORY_2_CHILDREN("Class Libraries", J9MEM_CATEGORY_CLASS_LIBRARIES, J9MEM_CATEGORY_SUN_JCL, J9MEM_CATEGORY_VM_JCL);
69
OMRMEM_CATEGORY_1_CHILD("JVMTI", J9MEM_CATEGORY_JVMTI, J9MEM_CATEGORY_JVMTI_ALLOCATE);
70
OMRMEM_CATEGORY_NO_CHILDREN("JVMTI Allocate()", J9MEM_CATEGORY_JVMTI_ALLOCATE);
71
OMRMEM_CATEGORY_NO_CHILDREN("JNI", J9MEM_CATEGORY_JNI);
72
OMRMEM_CATEGORY_7_CHILDREN("Standard Class Libraries", J9MEM_CATEGORY_SUN_JCL, J9MEM_CATEGORY_CLASSLIB_IO_MATH_LANG,
73
J9MEM_CATEGORY_CLASSLIB_ZIP, J9MEM_CATEGORY_CLASSLIB_WRAPPERS, J9MEM_CATEGORY_CLASSLIB_NETWORKING, J9MEM_CATEGORY_CLASSLIB_GUI,
74
J9MEM_CATEGORY_CLASSLIB_FONT, J9MEM_CATEGORY_CLASSLIB_SOUND);
75
OMRMEM_CATEGORY_NO_CHILDREN("IO/Math/Language", J9MEM_CATEGORY_CLASSLIB_IO_MATH_LANG);
76
OMRMEM_CATEGORY_NO_CHILDREN("Zip", J9MEM_CATEGORY_CLASSLIB_ZIP);
77
OMRMEM_CATEGORY_2_CHILDREN("Wrappers",J9MEM_CATEGORY_CLASSLIB_WRAPPERS, J9MEM_CATEGORY_CLASSLIB_WRAPPERS_MALLOC, J9MEM_CATEGORY_CLASSLIB_WRAPPERS_EBCDIC);
78
OMRMEM_CATEGORY_NO_CHILDREN("Malloc", J9MEM_CATEGORY_CLASSLIB_WRAPPERS_MALLOC);
79
OMRMEM_CATEGORY_NO_CHILDREN("z/OS EBCDIC Conversion", J9MEM_CATEGORY_CLASSLIB_WRAPPERS_EBCDIC);
80
OMRMEM_CATEGORY_3_CHILDREN("Networking", J9MEM_CATEGORY_CLASSLIB_NETWORKING, J9MEM_CATEGORY_CLASSLIB_NETWORKING_NET, J9MEM_CATEGORY_CLASSLIB_NETWORKING_NIO, J9MEM_CATEGORY_CLASSLIB_NETWORKING_RMI);
81
OMRMEM_CATEGORY_NO_CHILDREN("NET", J9MEM_CATEGORY_CLASSLIB_NETWORKING_NET);
82
OMRMEM_CATEGORY_NO_CHILDREN("NIO and NIO.2", J9MEM_CATEGORY_CLASSLIB_NETWORKING_NIO);
83
OMRMEM_CATEGORY_NO_CHILDREN("RMI", J9MEM_CATEGORY_CLASSLIB_NETWORKING_RMI);
84
OMRMEM_CATEGORY_4_CHILDREN("GUI", J9MEM_CATEGORY_CLASSLIB_GUI, J9MEM_CATEGORY_CLASSLIB_GUI_AWT, J9MEM_CATEGORY_CLASSLIB_GUI_MAWT, J9MEM_CATEGORY_CLASSLIB_GUI_JAWT, J9MEM_CATEGORY_CLASSLIB_GUI_MEDIALIB);
85
OMRMEM_CATEGORY_NO_CHILDREN("AWT", J9MEM_CATEGORY_CLASSLIB_GUI_AWT);
86
OMRMEM_CATEGORY_NO_CHILDREN("MAWT", J9MEM_CATEGORY_CLASSLIB_GUI_MAWT);
87
OMRMEM_CATEGORY_NO_CHILDREN("JAWT", J9MEM_CATEGORY_CLASSLIB_GUI_JAWT);
88
OMRMEM_CATEGORY_NO_CHILDREN("Medialib Image", J9MEM_CATEGORY_CLASSLIB_GUI_MEDIALIB);
89
OMRMEM_CATEGORY_NO_CHILDREN("Font", J9MEM_CATEGORY_CLASSLIB_FONT);
90
OMRMEM_CATEGORY_NO_CHILDREN("Sound", J9MEM_CATEGORY_CLASSLIB_SOUND);
91
OMRMEM_CATEGORY_NO_CHILDREN("Modules", J9MEM_CATEGORY_MODULES);
92
#if defined(OMR_OPT_CUDA)
93
OMRMEM_CATEGORY_NO_CHILDREN("CUDA", OMRMEM_CATEGORY_CUDA);
94
#endif /* OMR_OPT_CUDA */
95
#if JAVA_SPEC_VERSION >= 16
96
OMRMEM_CATEGORY_NO_CHILDREN("Foreign Linker API", J9MEM_CATEGORY_VM_FFI);
97
#endif /* JAVA_SPEC_VERSION >= 16 */
98
99
static OMRMemCategory * categories[] = {
100
CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_JRE),
101
CATEGORY_TABLE_ENTRY(OMRMEM_CATEGORY_VM),
102
CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_CLASSES),
103
CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_MODULES),
104
CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_CLASSES_SHC_CACHE),
105
CATEGORY_TABLE_ENTRY(OMRMEM_CATEGORY_MM),
106
CATEGORY_TABLE_ENTRY(OMRMEM_CATEGORY_MM_RUNTIME_HEAP),
107
CATEGORY_TABLE_ENTRY(OMRMEM_CATEGORY_THREADS_RUNTIME_STACK),
108
CATEGORY_TABLE_ENTRY(OMRMEM_CATEGORY_TRACE),
109
CATEGORY_TABLE_ENTRY(OMRMEM_CATEGORY_JIT),
110
CATEGORY_TABLE_ENTRY(OMRMEM_CATEGORY_JIT_CODE_CACHE),
111
CATEGORY_TABLE_ENTRY(OMRMEM_CATEGORY_JIT_DATA_CACHE),
112
CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_CUDA4J),
113
CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_SUN_MISC_UNSAFE_ALLOCATE),
114
CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_VM_JCL),
115
CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_CLASS_LIBRARIES),
116
CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_JVMTI),
117
CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_JVMTI_ALLOCATE),
118
CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_JNI),
119
CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_SUN_JCL),
120
CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_CLASSLIB_IO_MATH_LANG),
121
CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_CLASSLIB_ZIP),
122
CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_CLASSLIB_WRAPPERS),
123
CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_CLASSLIB_WRAPPERS_MALLOC),
124
CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_CLASSLIB_WRAPPERS_EBCDIC),
125
CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_CLASSLIB_NETWORKING),
126
CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_CLASSLIB_NETWORKING_NET),
127
CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_CLASSLIB_NETWORKING_NIO),
128
CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_CLASSLIB_NETWORKING_RMI),
129
CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_CLASSLIB_GUI),
130
CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_CLASSLIB_GUI_AWT),
131
CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_CLASSLIB_GUI_MAWT),
132
CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_CLASSLIB_GUI_JAWT),
133
CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_CLASSLIB_GUI_MEDIALIB),
134
CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_CLASSLIB_FONT),
135
CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_CLASSLIB_SOUND),
136
CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_SUN_MISC_UNSAFE_ALLOCATEDBB),
137
#if defined(OMR_OPT_CUDA)
138
CATEGORY_TABLE_ENTRY(OMRMEM_CATEGORY_CUDA),
139
#endif /* OMR_OPT_CUDA */
140
NULL, /* OMRMEM_CATEGORY_THREADS populated by thread library */
141
NULL, /* OMRMEM_CATEGORY_THREADS_NATIVE_STACK populated by thread library */
142
#if JAVA_SPEC_VERSION >= 16
143
CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_VM_FFI),
144
#endif /* JAVA_SPEC_VERSION >= 16 */
145
};
146
147
OMRMemCategorySet j9MainMemCategorySet = { sizeof(categories) / sizeof(OMRMemCategory *), categories };
148
149