Path: blob/master/runtime/j9vm/j9memcategories.c
5985 views
/*******************************************************************************1* Copyright (c) 2010, 2022 IBM Corp. and others2*3* This program and the accompanying materials are made available under4* the terms of the Eclipse Public License 2.0 which accompanies this5* distribution and is available at https://www.eclipse.org/legal/epl-2.0/6* or the Apache License, Version 2.0 which accompanies this distribution and7* is available at https://www.apache.org/licenses/LICENSE-2.0.8*9* This Source Code may also be made available under the following10* Secondary Licenses when the conditions for such availability set11* forth in the Eclipse Public License, v. 2.0 are satisfied: GNU12* General Public License, version 2 with the GNU Classpath13* Exception [1] and GNU General Public License, version 2 with the14* OpenJDK Assembly Exception [2].15*16* [1] https://www.gnu.org/software/classpath/license.html17* [2] http://openjdk.java.net/legal/assembly-exception.html18*19* 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-exception20*******************************************************************************/2122/**23* @brief This file contains the memory categories for the SDK.24* The only other categories are "Unknown" and "Port library" that25* are maintained inside the port library itself.26*/2728#include "j9.h"29#include "j9memcategories.h"3031/*32* To add a new category:33* - Add a new category macro to runtime/include/j9memcategories.h34* - Declare the category below35* - Add the category to the category table.36* - The first category is the root, all categories in the tree must be reachable from that.37*/3839/* Note: OMRMEM_CATEGORY_UNKNOWN and OMRMEM_CATEGORY_PORT_LIBRARY are stored inside the port library */40OMRMEM_CATEGORY_4_CHILDREN("JRE", J9MEM_CATEGORY_JRE, OMRMEM_CATEGORY_VM, OMRMEM_CATEGORY_JIT, J9MEM_CATEGORY_CLASS_LIBRARIES, OMRMEM_CATEGORY_UNKNOWN);41#if JAVA_SPEC_VERSION >= 1642#if defined(OMR_OPT_CUDA)43OMRMEM_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);44#else /* OMR_OPT_CUDA */45OMRMEM_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);46#endif /* OMR_OPT_CUDA */47#else /* JAVA_SPEC_VERSION >= 16 */48#if defined(OMR_OPT_CUDA)49OMRMEM_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);50#else /* OMR_OPT_CUDA */51OMRMEM_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);52#endif /* OMR_OPT_CUDA */53#endif /* JAVA_SPEC_VERSION >= 16 */54OMRMEM_CATEGORY_1_CHILD("Classes", J9MEM_CATEGORY_CLASSES, J9MEM_CATEGORY_CLASSES_SHC_CACHE);55OMRMEM_CATEGORY_NO_CHILDREN("Shared Class Cache", J9MEM_CATEGORY_CLASSES_SHC_CACHE);56OMRMEM_CATEGORY_1_CHILD("Memory Manager (GC)", OMRMEM_CATEGORY_MM, OMRMEM_CATEGORY_MM_RUNTIME_HEAP);57OMRMEM_CATEGORY_NO_CHILDREN("Java Heap", OMRMEM_CATEGORY_MM_RUNTIME_HEAP);58OMRMEM_CATEGORY_NO_CHILDREN("Java Stack", OMRMEM_CATEGORY_THREADS_RUNTIME_STACK);59OMRMEM_CATEGORY_NO_CHILDREN("Trace", OMRMEM_CATEGORY_TRACE);60OMRMEM_CATEGORY_2_CHILDREN("JIT", OMRMEM_CATEGORY_JIT, OMRMEM_CATEGORY_JIT_CODE_CACHE, OMRMEM_CATEGORY_JIT_DATA_CACHE);61OMRMEM_CATEGORY_NO_CHILDREN("JIT Code Cache", OMRMEM_CATEGORY_JIT_CODE_CACHE);62OMRMEM_CATEGORY_NO_CHILDREN("JIT Data Cache", OMRMEM_CATEGORY_JIT_DATA_CACHE);63OMRMEM_CATEGORY_1_CHILD("sun.misc.Unsafe", J9MEM_CATEGORY_SUN_MISC_UNSAFE_ALLOCATE, J9MEM_CATEGORY_SUN_MISC_UNSAFE_ALLOCATEDBB);64OMRMEM_CATEGORY_NO_CHILDREN("Direct Byte Buffers", J9MEM_CATEGORY_SUN_MISC_UNSAFE_ALLOCATEDBB);65OMRMEM_CATEGORY_2_CHILDREN("VM Class Libraries", J9MEM_CATEGORY_VM_JCL, J9MEM_CATEGORY_CUDA4J, J9MEM_CATEGORY_SUN_MISC_UNSAFE_ALLOCATE);66OMRMEM_CATEGORY_NO_CHILDREN("CUDA4J", J9MEM_CATEGORY_CUDA4J);67OMRMEM_CATEGORY_2_CHILDREN("Class Libraries", J9MEM_CATEGORY_CLASS_LIBRARIES, J9MEM_CATEGORY_SUN_JCL, J9MEM_CATEGORY_VM_JCL);68OMRMEM_CATEGORY_1_CHILD("JVMTI", J9MEM_CATEGORY_JVMTI, J9MEM_CATEGORY_JVMTI_ALLOCATE);69OMRMEM_CATEGORY_NO_CHILDREN("JVMTI Allocate()", J9MEM_CATEGORY_JVMTI_ALLOCATE);70OMRMEM_CATEGORY_NO_CHILDREN("JNI", J9MEM_CATEGORY_JNI);71OMRMEM_CATEGORY_7_CHILDREN("Standard Class Libraries", J9MEM_CATEGORY_SUN_JCL, J9MEM_CATEGORY_CLASSLIB_IO_MATH_LANG,72J9MEM_CATEGORY_CLASSLIB_ZIP, J9MEM_CATEGORY_CLASSLIB_WRAPPERS, J9MEM_CATEGORY_CLASSLIB_NETWORKING, J9MEM_CATEGORY_CLASSLIB_GUI,73J9MEM_CATEGORY_CLASSLIB_FONT, J9MEM_CATEGORY_CLASSLIB_SOUND);74OMRMEM_CATEGORY_NO_CHILDREN("IO/Math/Language", J9MEM_CATEGORY_CLASSLIB_IO_MATH_LANG);75OMRMEM_CATEGORY_NO_CHILDREN("Zip", J9MEM_CATEGORY_CLASSLIB_ZIP);76OMRMEM_CATEGORY_2_CHILDREN("Wrappers",J9MEM_CATEGORY_CLASSLIB_WRAPPERS, J9MEM_CATEGORY_CLASSLIB_WRAPPERS_MALLOC, J9MEM_CATEGORY_CLASSLIB_WRAPPERS_EBCDIC);77OMRMEM_CATEGORY_NO_CHILDREN("Malloc", J9MEM_CATEGORY_CLASSLIB_WRAPPERS_MALLOC);78OMRMEM_CATEGORY_NO_CHILDREN("z/OS EBCDIC Conversion", J9MEM_CATEGORY_CLASSLIB_WRAPPERS_EBCDIC);79OMRMEM_CATEGORY_3_CHILDREN("Networking", J9MEM_CATEGORY_CLASSLIB_NETWORKING, J9MEM_CATEGORY_CLASSLIB_NETWORKING_NET, J9MEM_CATEGORY_CLASSLIB_NETWORKING_NIO, J9MEM_CATEGORY_CLASSLIB_NETWORKING_RMI);80OMRMEM_CATEGORY_NO_CHILDREN("NET", J9MEM_CATEGORY_CLASSLIB_NETWORKING_NET);81OMRMEM_CATEGORY_NO_CHILDREN("NIO and NIO.2", J9MEM_CATEGORY_CLASSLIB_NETWORKING_NIO);82OMRMEM_CATEGORY_NO_CHILDREN("RMI", J9MEM_CATEGORY_CLASSLIB_NETWORKING_RMI);83OMRMEM_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);84OMRMEM_CATEGORY_NO_CHILDREN("AWT", J9MEM_CATEGORY_CLASSLIB_GUI_AWT);85OMRMEM_CATEGORY_NO_CHILDREN("MAWT", J9MEM_CATEGORY_CLASSLIB_GUI_MAWT);86OMRMEM_CATEGORY_NO_CHILDREN("JAWT", J9MEM_CATEGORY_CLASSLIB_GUI_JAWT);87OMRMEM_CATEGORY_NO_CHILDREN("Medialib Image", J9MEM_CATEGORY_CLASSLIB_GUI_MEDIALIB);88OMRMEM_CATEGORY_NO_CHILDREN("Font", J9MEM_CATEGORY_CLASSLIB_FONT);89OMRMEM_CATEGORY_NO_CHILDREN("Sound", J9MEM_CATEGORY_CLASSLIB_SOUND);90OMRMEM_CATEGORY_NO_CHILDREN("Modules", J9MEM_CATEGORY_MODULES);91#if defined(OMR_OPT_CUDA)92OMRMEM_CATEGORY_NO_CHILDREN("CUDA", OMRMEM_CATEGORY_CUDA);93#endif /* OMR_OPT_CUDA */94#if JAVA_SPEC_VERSION >= 1695OMRMEM_CATEGORY_NO_CHILDREN("Foreign Linker API", J9MEM_CATEGORY_VM_FFI);96#endif /* JAVA_SPEC_VERSION >= 16 */9798static OMRMemCategory * categories[] = {99CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_JRE),100CATEGORY_TABLE_ENTRY(OMRMEM_CATEGORY_VM),101CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_CLASSES),102CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_MODULES),103CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_CLASSES_SHC_CACHE),104CATEGORY_TABLE_ENTRY(OMRMEM_CATEGORY_MM),105CATEGORY_TABLE_ENTRY(OMRMEM_CATEGORY_MM_RUNTIME_HEAP),106CATEGORY_TABLE_ENTRY(OMRMEM_CATEGORY_THREADS_RUNTIME_STACK),107CATEGORY_TABLE_ENTRY(OMRMEM_CATEGORY_TRACE),108CATEGORY_TABLE_ENTRY(OMRMEM_CATEGORY_JIT),109CATEGORY_TABLE_ENTRY(OMRMEM_CATEGORY_JIT_CODE_CACHE),110CATEGORY_TABLE_ENTRY(OMRMEM_CATEGORY_JIT_DATA_CACHE),111CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_CUDA4J),112CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_SUN_MISC_UNSAFE_ALLOCATE),113CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_VM_JCL),114CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_CLASS_LIBRARIES),115CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_JVMTI),116CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_JVMTI_ALLOCATE),117CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_JNI),118CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_SUN_JCL),119CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_CLASSLIB_IO_MATH_LANG),120CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_CLASSLIB_ZIP),121CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_CLASSLIB_WRAPPERS),122CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_CLASSLIB_WRAPPERS_MALLOC),123CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_CLASSLIB_WRAPPERS_EBCDIC),124CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_CLASSLIB_NETWORKING),125CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_CLASSLIB_NETWORKING_NET),126CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_CLASSLIB_NETWORKING_NIO),127CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_CLASSLIB_NETWORKING_RMI),128CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_CLASSLIB_GUI),129CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_CLASSLIB_GUI_AWT),130CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_CLASSLIB_GUI_MAWT),131CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_CLASSLIB_GUI_JAWT),132CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_CLASSLIB_GUI_MEDIALIB),133CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_CLASSLIB_FONT),134CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_CLASSLIB_SOUND),135CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_SUN_MISC_UNSAFE_ALLOCATEDBB),136#if defined(OMR_OPT_CUDA)137CATEGORY_TABLE_ENTRY(OMRMEM_CATEGORY_CUDA),138#endif /* OMR_OPT_CUDA */139NULL, /* OMRMEM_CATEGORY_THREADS populated by thread library */140NULL, /* OMRMEM_CATEGORY_THREADS_NATIVE_STACK populated by thread library */141#if JAVA_SPEC_VERSION >= 16142CATEGORY_TABLE_ENTRY(J9MEM_CATEGORY_VM_FFI),143#endif /* JAVA_SPEC_VERSION >= 16 */144};145146OMRMemCategorySet j9MainMemCategorySet = { sizeof(categories) / sizeof(OMRMemCategory *), categories };147148149