Java应用程序的本地内存跟踪分析

本文将讨论本机内存跟踪 (NMT),我们可以使用它来隔离在 VM 级别增长的任何异常内存。

1.什么是本机内存?

本机内存是指计算机系统上运行的应用程序或程序可直接访问的内存空间。它是程序在执行期间存储和操作数据的内存区域。本机内存不同于托管内存,后者是由运行时环境或虚拟机管理的内存。

1.1.组成部分

本机内存的主要组件可能因所使用的操作系统和编程语言而异。一般而言,本机内存通常由以下组件组成:

  1. 堆栈
    堆栈是程序执行期间用于存储局部变量、函数调用和其他相关数据的内存区域。每个线程通常都有自己的堆栈。

  2. 堆是用于动态内存分配的内存区域。它是程序执行期间分配和释放对象和数据结构的地方。在 C 和 C++ 等语言中,堆通常由程序员管理,而在 Java 等语言中,堆由运行时环境通过垃圾收集器管理。
  3. 代码内存
    代码内存,也称为可执行内存或文本段,是存储程序编译代码的内存区域。它包含组成程序可执行代码的指令。
  4. 静态变量和全局变量
    静态变量和全局变量的内存空间在程序启动时分配,并在整个程序执行过程中保持不变。这些变量可以在不同范围内访问,并且可以在多个函数或模块之间共享。
  5. 库和DDL
    本机内存还包括共享库或动态链接库 (DLL) 占用的内存。这些库包含可供多个程序使用的预编译代码和资源。
  6. 操作系统数据结构
    操作系统使用内存来存储其数据结构,例如进程控制块、文件表、网络缓冲区和其他与系统相关的数据。
  7. 内存映射文件
    内存映射文件允许将文件视为计算机内存的一部分进行访问。文件的某些部分可以加载到内存中并直接访问,这对于高效的 I/O 操作非常有用。

2.什么是本机内存跟踪 (NMT)?

本机内存跟踪 (NMT) 是 Java 虚拟机 (JVM) 提供的一项功能,允许开发人员监视和分析 Java 应用程序中本机内存的分配和使用情况。它有助于识别和诊断本机内存泄漏和过度内存消耗。

3.如何进行本机内存跟踪 (NMT)?

3.1.确认您当前所使用的JDK版本

不同的JDK版本所使用的工具,以及具体工具的参数可能存在差异,在使用时需要注意,比如我在下面的示例中使用的是JDK17,如下:
在这里插入图片描述

3.2.示例程序

我在此处使用的程序是一个简易的内存占用逐渐增加的JAVA程序,源码如下:

import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.concurrent.Callable;

public class MemoryLeakExample {
    public static class DataProcessor  {
        private List<byte[]> data = new ArrayList<>();
 
        public void processData() {
            byte[] buffer = new byte[10240];
            new Random().nextBytes(buffer);
            data.add(buffer);
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

    }

    public static void main(String[] args) {
        DataProcessor processor = new DataProcessor();
        while (true) {
            processor.processData();
        }
    }
}

3.3.编译示例程序

javac MemoryLeakExample.java

3.3.启动示例程序(添加支持NMT功能的参数)

java -XX:NativeMemoryTracking=detail MemoryLeakExample

3.4.定义 NMT 的基线

jcmd {pid} VM.native_memory baseline scale=MB

3.5.捕获内存细节

jcmd {pid} VM.native_memory detail scale=MB > native_memory_detail

上述命令所捕获到的内存细节会保存到native_memory_detail文件中,其内容如下:

3195:

Native Memory Tracking:

(Omitting categories weighting less than 1MB)

Total: reserved=3534MB, committed=219MB
-                 Java Heap (reserved=2048MB, committed=130MB)
                            (mmap: reserved=2048MB, committed=130MB) 
 
-                     Class (reserved=1024MB, committed=0MB)
                            (classes #497)
                            (  instance classes #412, array classes #85)
                            (mmap: reserved=1024MB, committed=0MB) 
                            (  Metadata:   )
                            (    reserved=64MB, committed=0MB)
                            (    used=0MB)
                            (    waste=0MB =56.19%)
                            (  Class space:)
                            (    reserved=1024MB, committed=0MB)
                            (    used=0MB)
                            (    waste=0MB =96.15%)
 
-                    Thread (reserved=21MB, committed=21MB)
                            (thread #21)
                            (stack: reserved=21MB, committed=21MB)
 
-                      Code (reserved=242MB, committed=7MB)
                            (mmap: reserved=242MB, committed=7MB) 
 
-                        GC (reserved=117MB, committed=46MB)
                            (malloc=9MB #803) 
                            (mmap: reserved=108MB, committed=37MB) 
 
-                    Symbol (reserved=1MB, committed=1MB)
                            (malloc=1MB #67) 
 
-        Shared class space (reserved=16MB, committed=12MB)
                            (mmap: reserved=16MB, committed=12MB) 
 
-                 Metaspace (reserved=64MB, committed=0MB)
                            (mmap: reserved=64MB, committed=0MB) 
 
Virtual memory map:
 
[0x0000000105274000 - 0x0000000105374000] reserved and committed 1MB for Thread Stack from
    [0x0000000104779757] JNI_CreateJavaVM+0x57
    [0x0000000103910822] JavaMain+0x122
    [0x00000001039137e9] ThreadJavaMain+0x9
    [0x00007fff5e514661] _pthread_body+0x154

	[0x0000000105274000 - 0x0000000105374000] committed 1MB 
 
[0x000000010cb16000 - 0x000000010cc01000] reserved 1MB for Code from
    [0x0000000104c6c9a5] ReservedSpace::reserve(unsigned long, unsigned long, unsigned long, char*, bool)+0x2f5
    [0x00000001046b3400] CodeHeap::reserve(ReservedSpace, unsigned long, unsigned long)+0x140
    [0x00000001044fb3b5] CodeCache::add_heap(ReservedSpace, char const*, int)+0x115
    [0x00000001044fb071] CodeCache::initialize_heaps()+0x481
 
[0x000000010cc01000 - 0x000000010ccec000] reserved 1MB for Code from
    [0x0000000104c6c9a5] ReservedSpace::reserve(unsigned long, unsigned long, unsigned long, char*, bool)+0x2f5
    [0x00000001046b3400] CodeHeap::reserve(ReservedSpace, unsigned long, unsigned long)+0x140
    [0x00000001044fb3b5] CodeCache::add_heap(ReservedSpace, char const*, int)+0x115
    [0x00000001044fb0be] CodeCache::initialize_heaps()+0x4ce
 
[0x000000010d0f0000 - 0x000000010d4f0000] reserved 4MB for GC from
    [0x0000000104c6c9a5] ReservedSpace::reserve(unsigned long, unsigned long, unsigned long, char*, bool)+0x2f5
    [0x000000010460884d] G1CollectedHeap::initialize()+0x2ed
    [0x0000000104c2ce69] universe_init()+0xb9
    [0x00000001046e2ae3] init_globals()+0x33
 
[0x000000010d4f0000 - 0x000000010d8f0000] reserved 4MB for GC from
    [0x0000000104c6c9a5] ReservedSpace::reserve(unsigned long, unsigned long, unsigned long, char*, bool)+0x2f5
    [0x000000010460890c] G1CollectedHeap::initialize()+0x3ac
    [0x0000000104c2ce69] universe_init()+0xb9
    [0x00000001046e2ae3] init_globals()+0x33
 
[0x000000010da4f000 - 0x000000010de4f000] reserved 4MB for GC from
    [0x0000000104c6c9a5] ReservedSpace::reserve(unsigned long, unsigned long, unsigned long, char*, bool)+0x2f5
    [0x00000001046089cd] G1CollectedHeap::initialize()+0x46d
    [0x0000000104c2ce69] universe_init()+0xb9
    [0x00000001046e2ae3] init_globals()+0x33
 
[0x000000010de4f000 - 0x000000010fe4f000] reserved 32MB for GC from
    [0x0000000104c6c9a5] ReservedSpace::reserve(unsigned long, unsigned long, unsigned long, char*, bool)+0x2f5
    [0x0000000104608a7f] G1CollectedHeap::initialize()+0x51f
    [0x0000000104c2ce69] universe_init()+0xb9
    [0x00000001046e2ae3] init_globals()+0x33

	[0x000000010de4f000 - 0x000000010e04f000] committed 2MB from
            [0x0000000104647366] G1PageBasedVirtualSpace::commit_internal(unsigned long, unsigned long)+0x126
            [0x0000000104647566] G1PageBasedVirtualSpace::commit(unsigned long, unsigned long)+0x116
            [0x0000000104651cf4] G1RegionsLargerThanCommitSizeMapper::commit_regions(unsigned int, unsigned long, WorkGang*)+0x104
            [0x00000001046c88fb] HeapRegionManager::commit_regions(unsigned int, unsigned long, WorkGang*)+0xab
 
[0x000000010fe4f000 - 0x0000000111e4f000] reserved 32MB for GC from
    [0x0000000104c6c9a5] ReservedSpace::reserve(unsigned long, unsigned long, unsigned long, char*, bool)+0x2f5
    [0x0000000104608b22] G1CollectedHeap::initialize()+0x5c2
    [0x0000000104c2ce69] universe_init()+0xb9
    [0x00000001046e2ae3] init_globals()+0x33

	[0x000000010fe4f000 - 0x000000011004f000] committed 2MB from
            [0x0000000104647366] G1PageBasedVirtualSpace::commit_internal(unsigned long, unsigned long)+0x126
            [0x0000000104647566] G1PageBasedVirtualSpace::commit(unsigned long, unsigned long)+0x116
            [0x0000000104651cf4] G1RegionsLargerThanCommitSizeMapper::commit_regions(unsigned int, unsigned long, WorkGang*)+0x104
            [0x00000001046c8911] HeapRegionManager::commit_regions(unsigned int, unsigned long, WorkGang*)+0xc1
 
[0x0000000111e4f000 - 0x0000000113e4f000] reserved and committed 32MB for GC from
    [0x00000001046142fe] G1CMMarkStack::resize(unsigned long)+0x3e
    [0x000000010461539b] G1ConcurrentMark::G1ConcurrentMark(G1CollectedHeap*, G1RegionToSpaceMapper*, G1RegionToSpaceMapper*)+0x68b
    [0x0000000104608f4e] G1CollectedHeap::initialize()+0x9ee
    [0x0000000104c2ce69] universe_init()+0xb9

	[0x0000000111e4f000 - 0x0000000113e4f000] committed 32MB from
            [0x0000000104614317] G1CMMarkStack::resize(unsigned long)+0x57
            [0x000000010461539b] G1ConcurrentMark::G1ConcurrentMark(G1CollectedHeap*, G1RegionToSpaceMapper*, G1RegionToSpaceMapper*)+0x68b
            [0x0000000104608f4e] G1CollectedHeap::initialize()+0x9ee
            [0x0000000104c2ce69] universe_init()+0xb9
 
[0x0000000115000000 - 0x0000000116000000] reserved 16MB for Shared class space from
    [0x0000000104a90a43] os::reserve_memory_aligned(unsigned long, unsigned long, bool)+0x23
    [0x0000000104c6c9f5] ReservedSpace::reserve(unsigned long, unsigned long, unsigned long, char*, bool)+0x345
    [0x0000000104c6c2c3] ReservedSpace::initialize(unsigned long, unsigned long, unsigned long, char*, bool)+0x83
    [0x0000000104a25be8] Metaspace::reserve_address_space_for_compressed_classes(unsigned long)+0x28

	[0x0000000115000000 - 0x0000000115be4000] committed 12MB from
            [0x00000001045eb6ae] FileMapInfo::map_region(int, long, char*, ReservedSpace)+0xae
            [0x00000001045eb528] FileMapInfo::map_regions(int*, int, char*, ReservedSpace)+0xa8
            [0x0000000104a2d139] MetaspaceShared::map_archive(FileMapInfo*, char*, ReservedSpace)+0x79
            [0x0000000104a2c9db] MetaspaceShared::map_archives(FileMapInfo*, FileMapInfo*, bool)+0x16b
 
[0x0000000116000000 - 0x0000000156000000] reserved 1024MB for Class from
    [0x0000000104a90a43] os::reserve_memory_aligned(unsigned long, unsigned long, bool)+0x23
    [0x0000000104c6c9f5] ReservedSpace::reserve(unsigned long, unsigned long, unsigned long, char*, bool)+0x345
    [0x0000000104c6c2c3] ReservedSpace::initialize(unsigned long, unsigned long, unsigned long, char*, bool)+0x83
    [0x0000000104a25be8] Metaspace::reserve_address_space_for_compressed_classes(unsigned long)+0x28
 
[0x0000000156000000 - 0x000000015a000000] reserved 64MB for Metaspace from
    [0x0000000104c6c9a5] ReservedSpace::reserve(unsigned long, unsigned long, unsigned long, char*, bool)+0x2f5
    [0x0000000104c6c2c3] ReservedSpace::initialize(unsigned long, unsigned long, unsigned long, char*, bool)+0x83
    [0x0000000104c6b5ff] metaspace::VirtualSpaceNode::create_node(unsigned long, metaspace::CommitLimiter*, metaspace::AbstractCounter<unsigned long>*, metaspace::AbstractCounter<unsigned long>*)+0x4f
    [0x0000000104c6ac5e] metaspace::VirtualSpaceList::allocate_root_chunk()+0x3e
 
[0x0000000780000000 - 0x0000000800000000] reserved 2048MB for Java Heap from
    [0x0000000104c6c98e] ReservedSpace::reserve(unsigned long, unsigned long, unsigned long, char*, bool)+0x2de
    [0x0000000104c6cd23] ReservedHeapSpace::try_reserve_heap(unsigned long, unsigned long, unsigned long, char*)+0xb3
    [0x0000000104c6d325] ReservedHeapSpace::initialize_compressed_heap(unsigned long, unsigned long, unsigned long)+0x3f5
    [0x0000000104c6d694] ReservedHeapSpace::ReservedHeapSpace(unsigned long, unsigned long, unsigned long, char const*)+0x154

	[0x0000000780000000 - 0x0000000788000000] committed 128MB from
            [0x0000000104647366] G1PageBasedVirtualSpace::commit_internal(unsigned long, unsigned long)+0x126
            [0x0000000104647566] G1PageBasedVirtualSpace::commit(unsigned long, unsigned long)+0x116
            [0x0000000104651cf4] G1RegionsLargerThanCommitSizeMapper::commit_regions(unsigned int, unsigned long, WorkGang*)+0x104
            [0x00000001046c88e5] HeapRegionManager::commit_regions(unsigned int, unsigned long, WorkGang*)+0x95

	[0x00000007ffe76000 - 0x00000007fff00000] committed 1MB from
            [0x0000000104647366] G1PageBasedVirtualSpace::commit_internal(unsigned long, unsigned long)+0x126
            [0x0000000104647566] G1PageBasedVirtualSpace::commit(unsigned long, unsigned long)+0x116
            [0x0000000104651cf4] G1RegionsLargerThanCommitSizeMapper::commit_regions(unsigned int, unsigned long, WorkGang*)+0x104
            [0x00000001046c88e5] HeapRegionManager::commit_regions(unsigned int, unsigned long, WorkGang*)+0x95

	[0x00000007fff00000 - 0x00000007fff80000] committed 1MB from
            [0x00000001045ec75a] FileMapInfo::map_heap_data(MemRegion**, int, int, int*, bool)+0x1ca
            [0x00000001045ec3be] FileMapInfo::map_heap_regions_impl()+0x39e
            [0x00000001045ec8a7] FileMapInfo::map_heap_regions()+0x17
            [0x0000000104a2cbb5] MetaspaceShared::map_archives(FileMapInfo*, FileMapInfo*, bool)+0x345

	[0x00000007fff80000 - 0x0000000800000000] committed 1MB from
            [0x0000000104647366] G1PageBasedVirtualSpace::commit_internal(unsigned long, unsigned long)+0x126
            [0x0000000104647566] G1PageBasedVirtualSpace::commit(unsigned long, unsigned long)+0x116
            [0x0000000104651cf4] G1RegionsLargerThanCommitSizeMapper::commit_regions(unsigned int, unsigned long, WorkGang*)+0x104
            [0x00000001046c88e5] HeapRegionManager::commit_regions(unsigned int, unsigned long, WorkGang*)+0x95
 
[0x000001fcf9f2b000 - 0x000001fd08f2b000] reserved 240MB for Code from
    [0x0000000104c6c9a5] ReservedSpace::reserve(unsigned long, unsigned long, unsigned long, char*, bool)+0x2f5
    [0x0000000104c6d89c] ReservedCodeSpace::ReservedCodeSpace(unsigned long, unsigned long, unsigned long)+0xac
    [0x00000001044fb22e] CodeCache::reserve_heap_memory(unsigned long)+0x8e
    [0x00000001044faf6a] CodeCache::initialize_heaps()+0x37a

	[0x000001fcf9f2b000 - 0x000001fcfa19b000] committed 2MB from
            [0x0000000104c6dcf6] VirtualSpace::expand_by(unsigned long, bool)+0x126
            [0x0000000104c6daf4] VirtualSpace::initialize(ReservedSpace, unsigned long)+0xb4
            [0x00000001046b3359] CodeHeap::reserve(ReservedSpace, unsigned long, unsigned long)+0x99
            [0x00000001044fb3b5] CodeCache::add_heap(ReservedSpace, char const*, int)+0x115

	[0x000001fd01462000 - 0x000001fd016d2000] committed 2MB from
            [0x0000000104c6dcf6] VirtualSpace::expand_by(unsigned long, bool)+0x126
            [0x0000000104c6daf4] VirtualSpace::initialize(ReservedSpace, unsigned long)+0xb4
            [0x00000001046b3359] CodeHeap::reserve(ReservedSpace, unsigned long, unsigned long)+0x99
            [0x00000001044fb3b5] CodeCache::add_heap(ReservedSpace, char const*, int)+0x115

	[0x000001fd019f3000 - 0x000001fd01c63000] committed 2MB from
            [0x0000000104c6dcf6] VirtualSpace::expand_by(unsigned long, bool)+0x126
            [0x0000000104c6daf4] VirtualSpace::initialize(ReservedSpace, unsigned long)+0xb4
            [0x00000001046b3359] CodeHeap::reserve(ReservedSpace, unsigned long, unsigned long)+0x99
            [0x00000001044fb3b5] CodeCache::add_heap(ReservedSpace, char const*, int)+0x115
 
[0x0000700008dea000 - 0x0000700008eea000] reserved and committed 1MB for Thread Stack from
    [0x0000000104a8b5e8] thread_native_entry(Thread*)+0x148
    [0x00007fff5e514661] _pthread_body+0x154
    [0x00007fff5e51450d] _pthread_body+0x0
    [0x00007fff5e513bf9] thread_start+0xd

	[0x0000700008dea000 - 0x0000700008eea000] committed 1MB 
 
[0x0000700008eed000 - 0x0000700008fed000] reserved and committed 1MB for Thread Stack from
    [0x0000000104a8b5e8] thread_native_entry(Thread*)+0x148
    [0x00007fff5e514661] _pthread_body+0x154
    [0x00007fff5e51450d] _pthread_body+0x0
    [0x00007fff5e513bf9] thread_start+0xd

	[0x0000700008eed000 - 0x0000700008fed000] committed 1MB 
 
[0x0000700008ff0000 - 0x00007000090f0000] reserved and committed 1MB for Thread Stack from
    [0x0000000104a8b5e8] thread_native_entry(Thread*)+0x148
    [0x00007fff5e514661] _pthread_body+0x154
    [0x00007fff5e51450d] _pthread_body+0x0
    [0x00007fff5e513bf9] thread_start+0xd

	[0x0000700008ff0000 - 0x00007000090f0000] committed 1MB 
 
[0x00007000090f3000 - 0x00007000091f3000] reserved and committed 1MB for Thread Stack from
    [0x0000000104a8b5e8] thread_native_entry(Thread*)+0x148
    [0x00007fff5e514661] _pthread_body+0x154
    [0x00007fff5e51450d] _pthread_body+0x0
    [0x00007fff5e513bf9] thread_start+0xd

	[0x00007000090f3000 - 0x00007000091f3000] committed 1MB 
 
[0x00007000091f6000 - 0x00007000092f6000] reserved and committed 1MB for Thread Stack from
    [0x0000000104a8b5e8] thread_native_entry(Thread*)+0x148
    [0x00007fff5e514661] _pthread_body+0x154
    [0x00007fff5e51450d] _pthread_body+0x0
    [0x00007fff5e513bf9] thread_start+0xd

	[0x00007000091f6000 - 0x00007000092f6000] committed 1MB 
 
[0x00007000092f9000 - 0x00007000093f9000] reserved and committed 1MB for Thread Stack from
    [0x0000000104a8b5e8] thread_native_entry(Thread*)+0x148
    [0x00007fff5e514661] _pthread_body+0x154
    [0x00007fff5e51450d] _pthread_body+0x0
    [0x00007fff5e513bf9] thread_start+0xd

	[0x00007000092f9000 - 0x00007000093f9000] committed 1MB 
 
[0x00007000093fc000 - 0x00007000094fc000] reserved and committed 1MB for Thread Stack from
    [0x0000000104a8b5e8] thread_native_entry(Thread*)+0x148
    [0x00007fff5e514661] _pthread_body+0x154
    [0x00007fff5e51450d] _pthread_body+0x0
    [0x00007fff5e513bf9] thread_start+0xd

	[0x00007000093fc000 - 0x00007000094fc000] committed 1MB 
 
[0x00007000094ff000 - 0x00007000095ff000] reserved and committed 1MB for Thread Stack from
    [0x0000000104a8b5e8] thread_native_entry(Thread*)+0x148
    [0x00007fff5e514661] _pthread_body+0x154
    [0x00007fff5e51450d] _pthread_body+0x0
    [0x00007fff5e513bf9] thread_start+0xd

	[0x00007000094ff000 - 0x00007000095ff000] committed 1MB 
 
[0x0000700009602000 - 0x0000700009702000] reserved and committed 1MB for Thread Stack from
    [0x0000000104a8b5e8] thread_native_entry(Thread*)+0x148
    [0x00007fff5e514661] _pthread_body+0x154
    [0x00007fff5e51450d] _pthread_body+0x0
    [0x00007fff5e513bf9] thread_start+0xd

	[0x0000700009602000 - 0x0000700009702000] committed 1MB 
 
[0x0000700009705000 - 0x0000700009805000] reserved and committed 1MB for Thread Stack from
    [0x0000000104a8b5e8] thread_native_entry(Thread*)+0x148
    [0x00007fff5e514661] _pthread_body+0x154
    [0x00007fff5e51450d] _pthread_body+0x0
    [0x00007fff5e513bf9] thread_start+0xd

	[0x0000700009705000 - 0x0000700009805000] committed 1MB 
 
[0x0000700009808000 - 0x0000700009908000] reserved and committed 1MB for Thread Stack from
    [0x0000000104a8b5e8] thread_native_entry(Thread*)+0x148
    [0x00007fff5e514661] _pthread_body+0x154
    [0x00007fff5e51450d] _pthread_body+0x0
    [0x00007fff5e513bf9] thread_start+0xd

	[0x0000700009808000 - 0x0000700009908000] committed 1MB 
 
[0x000070000990b000 - 0x0000700009a0b000] reserved and committed 1MB for Thread Stack from
    [0x0000000104a8b5e8] thread_native_entry(Thread*)+0x148
    [0x00007fff5e514661] _pthread_body+0x154
    [0x00007fff5e51450d] _pthread_body+0x0
    [0x00007fff5e513bf9] thread_start+0xd

	[0x000070000990b000 - 0x0000700009a0b000] committed 1MB 
 
[0x0000700009a0e000 - 0x0000700009b0e000] reserved and committed 1MB for Thread Stack from
    [0x0000000104a8b5e8] thread_native_entry(Thread*)+0x148
    [0x00007fff5e514661] _pthread_body+0x154
    [0x00007fff5e51450d] _pthread_body+0x0
    [0x00007fff5e513bf9] thread_start+0xd

	[0x0000700009a0e000 - 0x0000700009b0e000] committed 1MB 
 
[0x0000700009b11000 - 0x0000700009c11000] reserved and committed 1MB for Thread Stack from
    [0x0000000104a8b5e8] thread_native_entry(Thread*)+0x148
    [0x00007fff5e514661] _pthread_body+0x154
    [0x00007fff5e51450d] _pthread_body+0x0
    [0x00007fff5e513bf9] thread_start+0xd

	[0x0000700009b11000 - 0x0000700009c11000] committed 1MB 
 
[0x0000700009c14000 - 0x0000700009d14000] reserved and committed 1MB for Thread Stack from
    [0x0000000104a8b5e8] thread_native_entry(Thread*)+0x148
    [0x00007fff5e514661] _pthread_body+0x154
    [0x00007fff5e51450d] _pthread_body+0x0
    [0x00007fff5e513bf9] thread_start+0xd

	[0x0000700009c14000 - 0x0000700009d14000] committed 1MB 
 
[0x0000700009d17000 - 0x0000700009e17000] reserved and committed 1MB for Thread Stack from
    [0x0000000104a8b5e8] thread_native_entry(Thread*)+0x148
    [0x00007fff5e514661] _pthread_body+0x154
    [0x00007fff5e51450d] _pthread_body+0x0
    [0x00007fff5e513bf9] thread_start+0xd

	[0x0000700009d17000 - 0x0000700009e17000] committed 1MB 
 
[0x0000700009e1a000 - 0x0000700009f1a000] reserved and committed 1MB for Thread Stack from
    [0x0000000104a8b5e8] thread_native_entry(Thread*)+0x148
    [0x00007fff5e514661] _pthread_body+0x154
    [0x00007fff5e51450d] _pthread_body+0x0
    [0x00007fff5e513bf9] thread_start+0xd

	[0x0000700009e1a000 - 0x0000700009f1a000] committed 1MB 
 
[0x0000700009f1d000 - 0x000070000a01d000] reserved and committed 1MB for Thread Stack from
    [0x0000000104a8b5e8] thread_native_entry(Thread*)+0x148
    [0x00007fff5e514661] _pthread_body+0x154
    [0x00007fff5e51450d] _pthread_body+0x0
    [0x00007fff5e513bf9] thread_start+0xd

	[0x0000700009f1d000 - 0x000070000a01d000] committed 1MB 
 
[0x000070000a020000 - 0x000070000a120000] reserved and committed 1MB for Thread Stack from
    [0x0000000104a8b5e8] thread_native_entry(Thread*)+0x148
    [0x00007fff5e514661] _pthread_body+0x154
    [0x00007fff5e51450d] _pthread_body+0x0
    [0x00007fff5e513bf9] thread_start+0xd

	[0x000070000a020000 - 0x000070000a120000] committed 1MB 
 
[0x000070000a123000 - 0x000070000a223000] reserved and committed 1MB for Thread Stack from
    [0x0000000104a8b5e8] thread_native_entry(Thread*)+0x148
    [0x00007fff5e514661] _pthread_body+0x154
    [0x00007fff5e51450d] _pthread_body+0x0
    [0x00007fff5e513bf9] thread_start+0xd

	[0x000070000a123000 - 0x000070000a223000] committed 1MB 
Details:

[0x00000001046081e1] G1CollectedHeap::G1CollectedHeap()+0x7d1
[0x00000001045f89db] G1Arguments::create_heap()+0x2b
[0x0000000104c2ce31] universe_init()+0x81
[0x00000001046e2ae3] init_globals()+0x33
                             (malloc=4MB type=GC #4)

[0x00000001046154b8] G1ConcurrentMark::G1ConcurrentMark(G1CollectedHeap*, G1RegionToSpaceMapper*, G1RegionToSpaceMapper*)+0x7a8
[0x0000000104608f4e] G1CollectedHeap::initialize()+0x9ee
[0x0000000104c2ce69] universe_init()+0xb9
[0x00000001046e2ae3] init_globals()+0x33
                             (malloc=4MB type=GC #4)

[0x0000000104b5a65f] ConcurrentHashTable<StringTableConfig, (MEMFLAGS)10>::ConcurrentHashTable(unsigned long, unsigned long, unsigned long, void*)+0x12f
[0x0000000104b57be8] StringTable::create_table()+0x88
[0x0000000104c2cfd1] universe_init()+0x221
[0x00000001046e2ae3] init_globals()+0x33
                             (malloc=1MB type=Symbol #1)

[0x0000000104c6c98e] ReservedSpace::reserve(unsigned long, unsigned long, unsigned long, char*, bool)+0x2de
[0x0000000104c6cd23] ReservedHeapSpace::try_reserve_heap(unsigned long, unsigned long, unsigned long, char*)+0xb3
[0x0000000104c6d325] ReservedHeapSpace::initialize_compressed_heap(unsigned long, unsigned long, unsigned long)+0x3f5
[0x0000000104c6d694] ReservedHeapSpace::ReservedHeapSpace(unsigned long, unsigned long, unsigned long, char const*)+0x154
                             (reserved=2048MB, committed=130MB Type=Java Heap)

[0x0000000104a90a43] os::reserve_memory_aligned(unsigned long, unsigned long, bool)+0x23
[0x0000000104c6c9f5] ReservedSpace::reserve(unsigned long, unsigned long, unsigned long, char*, bool)+0x345
[0x0000000104c6c2c3] ReservedSpace::initialize(unsigned long, unsigned long, unsigned long, char*, bool)+0x83
[0x0000000104a25be8] Metaspace::reserve_address_space_for_compressed_classes(unsigned long)+0x28
                             (reserved=1040MB, committed=12MB Type=Shared class space)

[0x0000000104c6c9a5] ReservedSpace::reserve(unsigned long, unsigned long, unsigned long, char*, bool)+0x2f5
[0x0000000104c6d89c] ReservedCodeSpace::ReservedCodeSpace(unsigned long, unsigned long, unsigned long)+0xac
[0x00000001044fb22e] CodeCache::reserve_heap_memory(unsigned long)+0x8e
[0x00000001044faf6a] CodeCache::initialize_heaps()+0x37a
                             (reserved=240MB, committed=7MB Type=Code)

[0x0000000104c6c9a5] ReservedSpace::reserve(unsigned long, unsigned long, unsigned long, char*, bool)+0x2f5
[0x0000000104c6c2c3] ReservedSpace::initialize(unsigned long, unsigned long, unsigned long, char*, bool)+0x83
[0x0000000104c6b5ff] metaspace::VirtualSpaceNode::create_node(unsigned long, metaspace::CommitLimiter*, metaspace::AbstractCounter<unsigned long>*, metaspace::AbstractCounter<unsigned long>*)+0x4f
[0x0000000104c6ac5e] metaspace::VirtualSpaceList::allocate_root_chunk()+0x3e
                             (reserved=64MB, committed=0MB Type=Metaspace)

[0x00000001046142fe] G1CMMarkStack::resize(unsigned long)+0x3e
[0x000000010461539b] G1ConcurrentMark::G1ConcurrentMark(G1CollectedHeap*, G1RegionToSpaceMapper*, G1RegionToSpaceMapper*)+0x68b
[0x0000000104608f4e] G1CollectedHeap::initialize()+0x9ee
[0x0000000104c2ce69] universe_init()+0xb9
                             (reserved=32MB, committed=32MB Type=GC)

[0x0000000104c6c9a5] ReservedSpace::reserve(unsigned long, unsigned long, unsigned long, char*, bool)+0x2f5
[0x0000000104608a7f] G1CollectedHeap::initialize()+0x51f
[0x0000000104c2ce69] universe_init()+0xb9
[0x00000001046e2ae3] init_globals()+0x33
                             (reserved=32MB, committed=2MB Type=GC)

[0x0000000104c6c9a5] ReservedSpace::reserve(unsigned long, unsigned long, unsigned long, char*, bool)+0x2f5
[0x0000000104608b22] G1CollectedHeap::initialize()+0x5c2
[0x0000000104c2ce69] universe_init()+0xb9
[0x00000001046e2ae3] init_globals()+0x33
                             (reserved=32MB, committed=2MB Type=GC)

[0x0000000104a8b5e8] thread_native_entry(Thread*)+0x148
[0x00007fff5e514661] _pthread_body+0x154
[0x00007fff5e51450d] _pthread_body+0x0
[0x00007fff5e513bf9] thread_start+0xd
                             (reserved=20MB, committed=20MB Type=Thread Stack)

[0x0000000104c6c9a5] ReservedSpace::reserve(unsigned long, unsigned long, unsigned long, char*, bool)+0x2f5
[0x00000001046089cd] G1CollectedHeap::initialize()+0x46d
[0x0000000104c2ce69] universe_init()+0xb9
[0x00000001046e2ae3] init_globals()+0x33
                             (reserved=4MB, committed=0MB Type=GC)

[0x0000000104c6c9a5] ReservedSpace::reserve(unsigned long, unsigned long, unsigned long, char*, bool)+0x2f5
[0x000000010460884d] G1CollectedHeap::initialize()+0x2ed
[0x0000000104c2ce69] universe_init()+0xb9
[0x00000001046e2ae3] init_globals()+0x33
                             (reserved=4MB, committed=0MB Type=GC)

[0x0000000104c6c9a5] ReservedSpace::reserve(unsigned long, unsigned long, unsigned long, char*, bool)+0x2f5
[0x000000010460890c] G1CollectedHeap::initialize()+0x3ac
[0x0000000104c2ce69] universe_init()+0xb9
[0x00000001046e2ae3] init_globals()+0x33
                             (reserved=4MB, committed=0MB Type=GC)

[0x0000000104779757] JNI_CreateJavaVM+0x57
[0x0000000103910822] JavaMain+0x122
[0x00000001039137e9] ThreadJavaMain+0x9
[0x00007fff5e514661] _pthread_body+0x154
                             (reserved=1MB, committed=1MB Type=Thread Stack)

[0x0000000104c6c9a5] ReservedSpace::reserve(unsigned long, unsigned long, unsigned long, char*, bool)+0x2f5
[0x00000001046b3400] CodeHeap::reserve(ReservedSpace, unsigned long, unsigned long)+0x140
[0x00000001044fb3b5] CodeCache::add_heap(ReservedSpace, char const*, int)+0x115
[0x00000001044fb0be] CodeCache::initialize_heaps()+0x4ce
                             (reserved=1MB, committed=0MB Type=Code)

[0x0000000104c6c9a5] ReservedSpace::reserve(unsigned long, unsigned long, unsigned long, char*, bool)+0x2f5
[0x00000001046b3400] CodeHeap::reserve(ReservedSpace, unsigned long, unsigned long)+0x140
[0x00000001044fb3b5] CodeCache::add_heap(ReservedSpace, char const*, int)+0x115
[0x00000001044fb071] CodeCache::initialize_heaps()+0x481
                             (reserved=1MB, committed=0MB Type=Code)

(2313 call sites weighting less than 1MB each omitted.)


3.6.捕获差异

jcmd {pid} VM.native_memory detail.diff scale=MB > native_memory_diff
3195:

Native Memory Tracking:

(Omitting categories weighting less than 1MB)

Total: reserved=3534MB +2MB, committed=219MB +2MB

-                 Java Heap (reserved=2048MB, committed=130MB)
                            (mmap: reserved=2048MB, committed=130MB)
 
-                     Class (reserved=1024MB, committed=0MB)
                            (classes #497)
                            (  instance classes #412, array classes #85)
                            (mmap: reserved=1024MB, committed=0MB)
                           : (  Metadata)
                            (    reserved=64MB, committed=0MB)
                            (    used=0MB)
                            (    waste=0MB =56.19%)
                           : (  Class space)
                            (    reserved=1024MB, committed=0MB)
                            (    used=0MB)
                            (    waste=0MB =96.15%)
 
-                    Thread (reserved=21MB +2MB, committed=21MB +2MB)
                            (thread #0)
                            (stack: reserved=21MB +2MB, committed=21MB +2MB)
 
-                      Code (reserved=242MB, committed=7MB)
                            (mmap: reserved=242MB, committed=7MB)
 
-                        GC (reserved=117MB, committed=46MB)
                            (malloc=9MB #804 +226)
                            (mmap: reserved=108MB, committed=37MB)
 
-                    Symbol (reserved=1MB, committed=1MB)
                            (malloc=1MB #67)
 
-        Shared class space (reserved=16MB, committed=12MB)
                            (mmap: reserved=16MB, committed=12MB)
 
-                 Metaspace (reserved=64MB, committed=0MB)
                            (mmap: reserved=64MB, committed=0MB)
 
[0x0000000104a8b5e8] thread_native_entry(Thread*)+0x148
[0x00007fff5e514661] _pthread_body+0x154
[0x00007fff5e51450d] _pthread_body+0x0
[0x00007fff5e513bf9] thread_start+0xd
                             (mmap: reserved=20MB +2MB, committed=20MB +2MB Type=Thread Stack)

3.7.借助JCMD工具进行定位分析

jcmd {pid} help
JFR.dump
JFR.start
JFR.stop
JVMTI.agent_load
JVMTI.data_dump
ManagementAgent.start
ManagementAgent.start_local
ManagementAgent.status
ManagementAgent.stop
Thread.print
VM.cds
VM.class_hierarchy
VM.classloader_stats
VM.classloaders
VM.command_line
VM.dynlibs
VM.events
VM.flags
VM.info
VM.log
VM.metaspace
VM.native_memory
VM.print_touched_methods
VM.set_flag
VM.stringtable
VM.symboltable
VM.system_properties
VM.systemdictionary
VM.uptime
VM.version
help

For more information about a specific command use 'help <command>'.

3.7.1.VM.classloader_stats

jcmd {pid} VM.classloader_stats
3195:
ClassLoader         Parent              CLD*               Classes   ChunkSz   BlockSz  Type
0x00000001150840a0  0x0000000115086378  0x00007fb585f0f940       2       768       508  jdk.internal.loader.ClassLoaders$AppClassLoader
0x0000000115086378  0x0000000000000000  0x00007fb585f0d6d0       0         0         0  jdk.internal.loader.ClassLoaders$PlatformClassLoader
0x0000000000000000  0x0000000000000000  0x00007fb585c6a650     495    557056     10889  <boot class loader>
Total = 3                                                      497    557824     11397  
ChunkSz: Total size of all allocated metaspace chunks
BlockSz: Total size of all allocated metaspace blocks (each chunk has several blocks)

3.7.2.VM.class_hierarchy

jcmd {pid} VM.class_hierarchy
3195:
java.lang.Object/null
|--java.security.SecureClassLoader$DebugHolder/null
|--jdk.internal.loader.URLClassPath/null
|--java.net.URLStreamHandlerFactory/null (intf)
|--sun.invoke.util.VerifyAccess/null
|--java.lang.ThreadGroup/null
|--java.lang.reflect.Modifier/null
|--java.util.Map/null (intf)
|--java.lang.invoke.MemberName/null
|--jdk.internal.access.JavaLangModuleAccess/null (intf)
|--jdk.internal.reflect.ReflectionFactory$GetReflectionFactoryAction/null
|--java.lang.module.ModuleDescriptor$1/null
|--java.util.Arrays/null
|--jdk.internal.reflect.MethodAccessor/null (intf)
|--java.lang.reflect.ReflectAccess/null
|--jdk.internal.access.JavaLangReflectAccess/null (intf)
|--jdk.internal.access.SharedSecrets/null
|--java.lang.Math/null
|--java.lang.StackFrameInfo/null
|  |--java.lang.LiveStackFrameInfo/null
|--java.lang.PublicMethods$Key/null
|--java.io.File/null
|--java.io.Writer/null
|  |--java.io.OutputStreamWriter/null
|  |--java.io.BufferedWriter/null
|  |--sun.nio.cs.StreamEncoder/null
|--java.lang.reflect.Array/null
|--java.lang.module.ModuleDescriptor$Provides/null
|--sun.nio.ByteBuffered/null (intf)
|--java.lang.StackWalker$StackFrame/null (intf)
|--java.lang.module.ModuleDescriptor$Version/null
|--java.lang.LiveStackFrame/null (intf)
|--java.lang.PublicMethods$MethodList/null
|--java.lang.Class$Atomic/null
|--java.lang.invoke.MethodHandles/null
|--java.nio.charset.Charset/null
|  |--sun.nio.cs.Unicode/null
|  |  |--sun.nio.cs.UTF_8/null
|--java.lang.invoke.MethodHandle/null
|  |--java.lang.invoke.DirectMethodHandle/null
|--sun.security.action.GetPropertyAction/null
|--jdk.internal.loader.URLClassPath$3/null
|--java.lang.Module$ArchivedData/null
|--sun.nio.cs.HistoricallyNamedCharset/null (intf)
|--jdk.internal.loader.URLClassPath$Loader/null
|  |--jdk.internal.loader.URLClassPath$FileLoader/null
|--java.lang.Void/null
|--java.util.jar.Manifest/null
|--jdk.internal.loader.ClassLoaderHelper/null
|--java.net.URLStreamHandler/null
|  |--sun.net.www.protocol.file.Handler/null
|--java.io.ObjectStreamField/null
|--java.lang.reflect.Parameter/null
|--java.io.DefaultFileSystem/null
|--java.security.SecureClassLoader$CodeSourceKey/null
|--java.security.SecureClassLoader$1/null
|--java.util.KeyValueHolder/null
|--java.util.concurrent.locks.AbstractOwnableSynchronizer/null
|--jdk.internal.misc.Unsafe/null
|--java.lang.Boolean/null
|--jdk.internal.loader.ClassLoaders/null
|--jdk.internal.misc.VM/null
|--jdk.internal.reflect.Reflection/null
|--jdk.internal.vm.PostVMInitHook$1/null
|--java.security.PermissionCollection/null
|  |--sun.security.util.LazyCodeSourcePermissionCollection/null
|  |--java.security.BasicPermissionCollection/null
|  |--java.security.Permissions/null
|--java.security.cert.Certificate/null
|--jdk.internal.module.ModuleHashes$HashSupplier/null (intf)
|--java.net.URI$1/null
|--java.lang.ref.Cleaner/null
|--java.util.HashMap$Node/null
|  |--java.util.LinkedHashMap$Entry/null
|  |  |--java.util.HashMap$TreeNode/null
|--sun.launcher.LauncherHelper/null
|--jdk.internal.module.SystemModuleFinders$3/null
|--java.util.concurrent.ThreadFactory/null (intf)
|--sun.net.util.URLUtil/null
|--java.lang.Runtime/null
|--java.lang.module.ModuleFinder/null (intf)
|--java.util.AbstractCollection/null
|  |--java.util.AbstractSet/null
|  |  |--java.util.ImmutableCollections$MapN$1/null
|  |  |--java.util.HashMap$EntrySet/null
|  |  |--java.util.Collections$SetFromMap/null
|  |  |--java.util.Collections$EmptySet/null
|  |  |--java.util.HashSet/null
|  |  |--java.util.WeakHashMap$KeySet/null
|  |--java.util.ArrayDeque/null
|  |--java.util.AbstractList/null
|  |  |--java.util.Collections$EmptyList/null
|  |  |--java.util.ArrayList/null
|  |--java.util.ImmutableCollections$AbstractImmutableCollection/null
|  |  |--java.util.ImmutableCollections$AbstractImmutableSet/null
|  |  |  |--java.util.ImmutableCollections$SetN/null
|  |  |  |--java.util.ImmutableCollections$Set12/null
|  |  |--java.util.ImmutableCollections$AbstractImmutableList/null
|  |  |  |--java.util.ImmutableCollections$ListN/null
|  |  |  |--java.util.ImmutableCollections$List12/null
|--java.security.PrivilegedExceptionAction/null (intf)
|--jdk.internal.ref.CleanerFactory$1/null
|--java.lang.ClassLoader$ParallelLoaders/null
|--jdk.internal.module.Modules/null
|--jdk.internal.module.SystemModuleFinders$SystemModuleFinder/null
|--java.lang.StackTraceElement/null
|--java.net.URL/null
|--jdk.internal.loader.NativeLibraries/null
|--java.lang.Thread$UncaughtExceptionHandler/null (intf)
|--java.util.Optional/null
|--java.util.random.RandomGenerator/null (intf)
|--jdk.internal.misc.OSEnvironment/null
|--java.security.CodeSource/null
|--java.io.FileSystem/null
|  |--java.io.UnixFileSystem/null
|--java.lang.invoke.MemberName$Factory/null
|--java.util.Collections/null
|--jdk.internal.reflect.ConstantPool/null
|--java.security.ProtectionDomain/null
|--jdk.internal.util.ArraysSupport/null
|--java.security.Guard/null (intf)
|--java.util.Comparator/null (intf)
|--jdk.internal.reflect.FieldAccessor/null (intf)
|--java.lang.String/null
|--java.security.Permission/null
|  |--java.security.BasicPermission/null
|  |  |--java.lang.RuntimePermission/null
|  |  |--java.lang.reflect.ReflectPermission/null
|  |--java.security.AllPermission/null
|  |--java.security.UnresolvedPermission/null
|--java.lang.String$CaseInsensitiveComparator/null
|--java.lang.annotation.Annotation/null (intf)
|--java.nio.charset.spi.CharsetProvider/null
|  |--sun.nio.cs.StandardCharsets/null
|--java.lang.StringLatin1/null
|--java.util.Random/null
|--jdk.internal.reflect.CallerSensitive/null (intf)
|--java.util.Queue/null (intf)
|--java.security.Principal/null (intf)
|--java.util.HexFormat/null
|--java.util.RandomAccess/null (intf)
|--java.security.AccessControlContext/null
|--jdk.internal.access.JavaSecurityAccess/null (intf)
|--java.util.Hashtable$Entry/null
|--java.security.ProtectionDomain$JavaSecurityAccessImpl/null
|--jdk.internal.math.FDBigInteger/null
|--java.security.ProtectionDomain$Key/null
|--java.util.Deque/null (intf)
|--java.lang.StringCoding/null
|--MemoryLeakExample$DataProcessor/0x00007fb585f0f940
|--MemoryLeakExample/0x00007fb585f0f940
|--java.net.URL$DefaultFactory/null
|--java.lang.StackStreamFactory$AbstractStackWalker/null
|--java.lang.invoke.VarHandle/null
|--jdk.internal.access.JavaNetURLAccess/null (intf)
|--jdk.internal.loader.Resource/null
|  |--jdk.internal.loader.URLClassPath$FileLoader$1/null
|--java.io.FileInputStream$1/null
|--java.net.URL$3/null
|--java.lang.Module/null
|--java.lang.NamedPackage/null
|--java.lang.constant.ConstantDesc/null (intf)
|--sun.net.www.ParseUtil/null
|--java.lang.SecurityManager/null
|--java.lang.invoke.TypeDescriptor$OfMethod/null (intf)
|--java.util.Collections$UnmodifiableMap/null
|--java.lang.Class$ReflectionData/null
|--jdk.internal.ref.CleanerFactory/null
|--jdk.internal.reflect.ConstructorAccessor/null (intf)
|--java.lang.StackWalker/null
|--java.lang.ref.Cleaner$1/null
|--java.lang.module.ModuleDescriptor$Requires/null
|--java.lang.Throwable/null
|  |--java.lang.Error/null
|  |  |--java.lang.ThreadDeath/null
|  |  |--java.lang.LinkageError/null
|  |  |  |--java.lang.NoClassDefFoundError/null
|  |  |  |--java.lang.BootstrapMethodError/null
|  |  |--java.lang.VirtualMachineError/null
|  |  |  |--java.lang.InternalError/null
|  |  |  |--java.lang.OutOfMemoryError/null
|  |  |  |--java.lang.StackOverflowError/null
|  |--java.lang.Exception/null
|  |  |--java.lang.InterruptedException/null
|  |  |--java.lang.RuntimeException/null
|  |  |  |--java.lang.ClassCastException/null
|  |  |  |--java.lang.NullPointerException/null
|  |  |  |--java.lang.ArithmeticException/null
|  |  |  |--java.lang.ArrayStoreException/null
|  |  |  |--java.lang.IllegalArgumentException/null
|  |  |  |--java.lang.IllegalMonitorStateException/null
|  |  |--java.lang.ReflectiveOperationException/null
|  |  |  |--java.lang.ClassNotFoundException/null
|--jdk.internal.reflect.MagicAccessorImpl/null
|  |--jdk.internal.reflect.FieldAccessorImpl/null
|  |  |--jdk.internal.reflect.UnsafeFieldAccessorImpl/null
|  |  |  |--jdk.internal.reflect.UnsafeStaticFieldAccessorImpl/null
|  |--jdk.internal.reflect.MethodAccessorImpl/null
|  |--jdk.internal.reflect.ConstructorAccessorImpl/null
|  |  |--jdk.internal.reflect.NativeConstructorAccessorImpl/null
|--jdk.internal.ref.CleanerImpl/null
|--java.lang.module.ModuleDescriptor$Exports/null
|--java.lang.invoke.MethodType/null
|--java.lang.module.ModuleDescriptor$Opens/null
|--java.util.function.Function/null (intf)
|--java.lang.invoke.CallSite/null
|  |--java.lang.invoke.ConstantCallSite/null
|  |--java.lang.invoke.MutableCallSite/null
|  |--java.lang.invoke.VolatileCallSite/null
|--java.lang.reflect.Member/null (intf)
|--jdk.internal.invoke.NativeEntryPoint/null
|--java.lang.invoke.MethodHandleNatives$CallSiteContext/null
|--java.lang.invoke.StringConcatFactory/null
|--java.lang.AssertionStatusDirectives/null
|--java.security.PrivilegedAction/null (intf)
|--sun.util.locale.BaseLocale$Key/null
|--jdk.internal.module.ModuleTarget/null
|--java.lang.reflect.AccessibleObject/null
|  |--java.lang.reflect.Field/null
|  |--java.lang.reflect.Executable/null
|  |  |--java.lang.reflect.Method/null
|  |  |--java.lang.reflect.Constructor/null
|--java.lang.invoke.MethodHandleStatics/null
|--java.security.AccessController/null
|--jdk.internal.module.ModuleBootstrap/null
|--jdk.internal.module.ServicesCatalog/null
|--jdk.internal.access.JavaLangRefAccess/null (intf)
|--java.lang.ref.Reference$1/null
|--sun.util.locale.LocaleUtils/null
|--jdk.internal.misc.Signal$Handler/null (intf)
|--java.lang.Runnable/null (intf)
|--jdk.internal.loader.BootLoader/null
|--java.lang.Terminator$1/null
|--java.lang.ClassLoader/null
|  |--java.security.SecureClassLoader/null
|  |  |--jdk.internal.loader.BuiltinClassLoader/null
|  |  |  |--jdk.internal.loader.ClassLoaders$PlatformClassLoader/null
|  |  |  |--jdk.internal.loader.ClassLoaders$AppClassLoader/null
|  |  |  |--jdk.internal.loader.ClassLoaders$BootClassLoader/null
|  |--jdk.internal.reflect.DelegatingClassLoader/null
|--jdk.internal.reflect.ReflectionFactory/null
|--jdk.internal.misc.Signal/null
|--java.lang.System/null
|--java.lang.Comparable/null (intf)
|--java.lang.Thread/null
|  |--java.lang.ref.Reference$ReferenceHandler/null
|  |--jdk.internal.misc.InnocuousThread/null
|  |--java.lang.ref.Finalizer$FinalizerThread/null
|--java.lang.ref.ReferenceQueue/null
|  |--java.lang.ref.ReferenceQueue$Null/null
|--java.util.concurrent.ConcurrentMap/null (intf)
|--java.nio.ByteOrder/null
|--sun.net.util.IPAddressUtil/null
|--java.lang.Terminator/null
|--sun.util.locale.BaseLocale/null
|--jdk.internal.util.Preconditions/null
|--jdk.internal.module.ModuleLoaderMap$Mapper/null
|--java.lang.module.ModuleReference/null
|  |--jdk.internal.module.ModuleReferenceImpl/null
|--java.lang.ModuleLayer/null
|--java.lang.invoke.StringConcatFactory$3/null
|--java.util.function.Supplier/null (intf)
|--java.lang.CharacterData/null
|  |--java.lang.CharacterDataLatin1/null
|--java.lang.invoke.StringConcatFactory$2/null
|--java.lang.Enum/null
|  |--java.lang.module.ModuleDescriptor$Requires$Modifier/null
|  |--java.io.File$PathStatus/null
|--jdk.internal.access.JavaIOFileDescriptorAccess/null (intf)
|--java.lang.module.ModuleDescriptor/null
|--java.lang.invoke.StringConcatFactory$1/null
|--java.io.FileDescriptor/null
|--java.util.concurrent.locks.LockSupport/null
|--java.io.FileDescriptor$1/null
|--jdk.internal.vm.PostVMInitHook/null
|--java.lang.Long$LongCache/null
|--java.nio.charset.CharsetEncoder/null
|  |--sun.nio.cs.UTF_8$Encoder/null
|--jdk.internal.module.ModulePatcher/null
|--java.lang.Byte$ByteCache/null
|--java.lang.invoke.LambdaForm/null
|--java.io.InputStream/null
|  |--java.io.FilterInputStream/null
|  |  |--java.io.BufferedInputStream/null
|  |--java.io.ByteArrayInputStream/null
|  |--java.io.FileInputStream/null
|--java.lang.Short$ShortCache/null
|--java.util.AbstractMap/null
|  |--java.util.ImmutableCollections$AbstractImmutableMap/null
|  |  |--java.util.ImmutableCollections$MapN/null
|  |--java.util.concurrent.ConcurrentHashMap/null
|  |--java.util.HashMap/null
|  |--java.util.Collections$EmptyMap/null
|  |--java.util.WeakHashMap/null
|--jdk.internal.access.JavaNioAccess/null (intf)
|--jdk.internal.module.SystemModuleFinders$2/null
|--java.lang.Character$CharacterCache/null
|--java.lang.AbstractStringBuilder/null
|  |--java.lang.StringBuilder/null
|  |--java.lang.StringBuffer/null
|--java.util.List/null (intf)
|--jdk.internal.access.JavaNetUriAccess/null (intf)
|--java.nio.Buffer$1/null
|--jdk.internal.module.ModuleHashes/null
|--java.util.HashMap$HashIterator/null
|  |--java.util.HashMap$EntryIterator/null
|--jdk.internal.util.StaticProperty/null
|--sun.util.locale.LocaleObjectCache/null
|  |--sun.util.locale.BaseLocale$Cache/null
|  |--java.util.Locale$Cache/null
|--java.lang.CharSequence/null (intf)
|--jdk.internal.misc.Signal$NativeHandler/null
|--java.util.ImmutableCollections$MapN$MapNIterator/null
|--java.util.Map$Entry/null (intf)
|--java.util.ImmutableCollections/null
|--jdk.internal.access.JavaLangAccess/null (intf)
|--jdk.internal.misc.CDS/null
|--java.util.Set/null (intf)
|--java.lang.invoke.MethodHandles$Lookup/null
|--java.lang.Record/null
|--java.util.concurrent.locks.Lock/null (intf)
|--jdk.internal.module.ModuleBootstrap$Counters/null
|--java.util.concurrent.locks.ReentrantLock/null
|  |--java.util.concurrent.ConcurrentHashMap$Segment/null
|--jdk.internal.module.ArchivedBootLayer/null
|--java.util.concurrent.ConcurrentHashMap$CounterCell/null
|--jdk.internal.module.ArchivedModuleGraph/null
|--java.util.concurrent.ConcurrentHashMap$Node/null
|  |--java.util.concurrent.ConcurrentHashMap$ReservationNode/null
|--java.util.Iterator/null (intf)
|--java.lang.reflect.RecordComponent/null
|--java.net.URI/null
|--java.util.Collection/null (intf)
|--jdk.internal.vm.vector.VectorSupport/null
|--java.lang.Iterable/null (intf)
|--jdk.internal.module.ServicesCatalog$ServiceProvider/null
|--java.lang.invoke.MethodHandleNatives/null
|--java.util.Objects/null
|--jdk.internal.loader.ArchivedClassLoaders/null
|--java.lang.invoke.ResolvedMethodName/null
|--java.lang.module.ResolvedModule/null
|--jdk.internal.vm.vector.VectorSupport$VectorPayload/null
|  |--jdk.internal.vm.vector.VectorSupport$Vector/null
|  |--jdk.internal.vm.vector.VectorSupport$VectorMask/null
|  |--jdk.internal.vm.vector.VectorSupport$VectorShuffle/null
|--java.util.concurrent.CopyOnWriteArrayList/null
|--sun.security.util.Debug/null
|--java.util.Dictionary/null
|  |--java.util.Hashtable/null
|  |  |--java.util.Properties/null
|--java.util.Locale/null
|--java.lang.ThreadLocal/null
|--java.lang.Number/null
|  |--java.lang.Long/null
|  |--java.lang.Integer/null
|  |--java.lang.Double/null
|  |--java.lang.Float/null
|  |--java.lang.Short/null
|  |--java.lang.Byte/null
|  |--java.util.concurrent.atomic.AtomicInteger/null
|  |--java.util.concurrent.atomic.AtomicLong/null
|--java.io.Serializable/null (intf)
|--java.lang.Integer$IntegerCache/null
|--java.lang.StringConcatHelper/null
|--java.lang.VersionProps/null
|--java.lang.constant.Constable/null (intf)
|--jdk.internal.util.SystemProps$Raw/null
|--java.util.jar.Attributes$Name/null
|--java.lang.reflect.Type/null (intf)
|--java.lang.System$2/null
|--java.lang.ref.Cleaner$Cleanable/null (intf)
|--java.lang.reflect.GenericDeclaration/null (intf)
|--jdk.internal.util.SystemProps/null
|--java.lang.invoke.TypeDescriptor/null (intf)
|--java.lang.Appendable/null (intf)
|--java.lang.ref.ReferenceQueue$Lock/null
|--java.io.Flushable/null (intf)
|--java.lang.reflect.AnnotatedElement/null (intf)
|--java.lang.ref.Reference/null
|  |--java.lang.ref.SoftReference/null
|  |  |--sun.util.locale.LocaleObjectCache$CacheEntry/null
|  |--java.lang.ref.WeakReference/null
|  |  |--java.util.WeakHashMap$Entry/null
|  |--java.lang.ref.FinalReference/null
|  |  |--java.lang.ref.Finalizer/null
|  |--java.lang.ref.PhantomReference/null
|  |  |--jdk.internal.ref.Cleaner/null
|  |  |--jdk.internal.ref.PhantomCleanable/null
|  |  |  |--jdk.internal.ref.CleanerImpl$PhantomCleanableRef/null
|  |  |  |--jdk.internal.ref.CleanerImpl$CleanerCleanable/null
|  |  |  |--java.io.FileCleanable/null
|--java.io.Closeable/null (intf)
|--java.nio.charset.CodingErrorAction/null
|--java.lang.AutoCloseable/null (intf)
|--java.lang.invoke.TypeDescriptor$OfField/null (intf)
|--java.lang.Character/null
|--java.lang.Class/null
|--jdk.internal.loader.AbstractClassLoaderValue/null
|  |--jdk.internal.loader.ClassLoaderValue/null
|--jdk.internal.loader.BuiltinClassLoader$LoadedModule/null
|--jdk.internal.misc.ScopedMemoryAccess/null
|--java.lang.module.Configuration/null
|--jdk.internal.misc.UnsafeConstants/null
|--java.lang.Cloneable/null (intf)
|--java.io.OutputStream/null
|  |--java.io.FileOutputStream/null
|  |--java.io.FilterOutputStream/null
|  |  |--java.io.PrintStream/null
|  |  |--java.io.BufferedOutputStream/null
|--java.nio.Buffer/null
|  |--java.nio.ByteBuffer/null
|  |  |--java.nio.HeapByteBuffer/null

3.7.3.GC.class_histogram

3.7.3.1.第一次
jcmd {pid} GC.class_histogram
3195:
 num     #instances         #bytes  class name (module)
-------------------------------------------------------
   1:         12293       46516400  [B (java.base@17.0.8)
   2:          7710         185040  java.lang.String (java.base@17.0.8)
   3:          1428         177896  java.lang.Class (java.base@17.0.8)
   4:           879         117344  [Ljava.lang.Object; (java.base@17.0.8)
   5:             6          33016  [C (java.base@17.0.8)
   6:           998          31936  java.util.HashMap$Node (java.base@17.0.8)
   7:           467          30904  [I (java.base@17.0.8)
   8:           905          28960  java.util.concurrent.ConcurrentHashMap$Node (java.base@17.0.8)
   9:           257          23696  [Ljava.util.HashMap$Node; (java.base@17.0.8)
  10:            19          19312  [Ljava.util.concurrent.ConcurrentHashMap$Node; (java.base@17.0.8)
  11:           259          12432  java.util.HashMap (java.base@17.0.8)
  12:           341          10912  jdk.internal.math.FDBigInteger (java.base@17.0.8)
  13:           362           8688  java.lang.module.ModuleDescriptor$Exports (java.base@17.0.8)
  14:           256           6144  java.lang.Long (java.base@17.0.8)
  15:           248           5952  java.util.ImmutableCollections$Set12 (java.base@17.0.8)
  16:            62           4960  java.net.URI (java.base@17.0.8)
  17:           132           4224  java.lang.module.ModuleDescriptor$Requires (java.base@17.0.8)
  18:           256           4096  java.lang.Byte (java.base@17.0.8)
  19:           256           4096  java.lang.Integer (java.base@17.0.8)
  20:           256           4096  java.lang.Short (java.base@17.0.8)
  21:            62           3968  java.lang.module.ModuleDescriptor (java.base@17.0.8)
  22:            68           3808  java.lang.Module (java.base@17.0.8)
  23:            10           3680  java.lang.Thread (java.base@17.0.8)
  24:            62           3472  jdk.internal.module.ModuleReferenceImpl (java.base@17.0.8)
  25:           137           3288  java.util.ImmutableCollections$SetN (java.base@17.0.8)
  26:           196           3136  java.util.HashSet (java.base@17.0.8)
  27:            39           2496  java.util.concurrent.ConcurrentHashMap (java.base@17.0.8)
  28:           128           2048  java.lang.Character (java.base@17.0.8)
  29:            61           1952  jdk.internal.loader.BuiltinClassLoader$LoadedModule (java.base@17.0.8)
  30:             7           1864  [J (java.base@17.0.8)
  31:            62           1488  java.lang.module.ResolvedModule (java.base@17.0.8)
  32:            62           1488  jdk.internal.module.ServicesCatalog$ServiceProvider (java.base@17.0.8)
  33:            62           1488  jdk.internal.module.SystemModuleFinders$2 (java.base@17.0.8)
  34:            60           1440  java.lang.module.ModuleDescriptor$Provides (java.base@17.0.8)
  35:             1           1376  [Ljdk.internal.math.FDBigInteger; (java.base@17.0.8)
  36:            50           1200  java.util.ImmutableCollections$List12 (java.base@17.0.8)
  37:            72           1152  java.lang.Object (java.base@17.0.8)
  38:             1           1040  [Ljava.lang.Byte; (java.base@17.0.8)
  39:             1           1040  [Ljava.lang.Integer; (java.base@17.0.8)
  40:             1           1040  [Ljava.lang.Long; (java.base@17.0.8)
  41:             1           1040  [Ljava.lang.Short; (java.base@17.0.8)
  42:            24            960  java.io.ObjectStreamField (java.base@17.0.8)
  43:            60            960  jdk.internal.module.SystemModuleFinders$3 (java.base@17.0.8)
  44:            12            864  java.lang.reflect.Field (java.base@17.0.8)
  45:            30            720  java.util.concurrent.CopyOnWriteArrayList (java.base@17.0.8)
  46:            20            640  java.util.Locale (java.base@17.0.8)
  47:            20            640  sun.util.locale.BaseLocale (java.base@17.0.8)
  48:            26            624  java.util.jar.Attributes$Name (java.base@17.0.8)
  49:             1            528  [Ljava.lang.Character; (java.base@17.0.8)
  50:            13            520  java.security.AccessControlContext (java.base@17.0.8)
  51:             6            480  [S (java.base@17.0.8)
  52:            12            480  java.lang.OutOfMemoryError (java.base@17.0.8)
  53:             1            376  java.lang.ref.Finalizer$FinalizerThread (java.base@17.0.8)
  54:             1            376  jdk.internal.misc.InnocuousThread (java.base@17.0.8)
  55:             1            368  java.lang.ref.Reference$ReferenceHandler (java.base@17.0.8)
  56:            14            336  java.util.ImmutableCollections$ListN (java.base@17.0.8)
  57:             8            240  [Ljava.io.ObjectStreamField; (java.base@17.0.8)
  58:             7            224  java.util.Hashtable$Entry (java.base@17.0.8)
  59:             9            216  java.util.ArrayList (java.base@17.0.8)
  60:             5            200  java.security.ProtectionDomain (java.base@17.0.8)
  61:             5            200  java.util.WeakHashMap$Entry (java.base@17.0.8)
  62:             6            192  java.lang.ref.ReferenceQueue (java.base@17.0.8)
  63:             4            160  java.security.CodeSource (java.base@17.0.8)
  64:             5            160  java.util.ImmutableCollections$MapN (java.base@17.0.8)
  65:             5            144  [Ljava.lang.String; (java.base@17.0.8)
  66:             3            144  java.lang.ThreadGroup (java.base@17.0.8)
  67:             6            144  java.lang.module.ModuleDescriptor$Requires$Modifier (java.base@17.0.8)
  68:             3            144  java.util.Hashtable (java.base@17.0.8)
  69:             3            128  [Ljava.util.Hashtable$Entry; (java.base@17.0.8)
  70:             2            128  java.lang.Class$ReflectionData (java.base@17.0.8)
  71:             8            128  java.lang.ref.ReferenceQueue$Lock (java.base@17.0.8)
  72:             4            128  jdk.internal.loader.NativeLibraries (java.base@17.0.8)
  73:             3            120  java.io.FileDescriptor (java.base@17.0.8)
  74:             3            120  java.lang.ref.SoftReference (java.base@17.0.8)
  75:             3            112  [Ljava.lang.Thread; (java.base@17.0.8)
  76:             2            112  [Ljava.lang.invoke.MethodHandle; (java.base@17.0.8)
  77:             2            112  java.nio.HeapByteBuffer (java.base@17.0.8)
  78:             1            104  jdk.internal.loader.ClassLoaders$AppClassLoader (java.base@17.0.8)
  79:             1            104  jdk.internal.loader.ClassLoaders$BootClassLoader (java.base@17.0.8)
  80:             1            104  jdk.internal.loader.ClassLoaders$PlatformClassLoader (java.base@17.0.8)
  81:             1             96  [Lsun.util.locale.BaseLocale; (java.base@17.0.8)
  82:             3             96  java.lang.invoke.MethodHandles$Lookup (java.base@17.0.8)
  83:             4             96  java.lang.module.ModuleDescriptor$Opens (java.base@17.0.8)
  84:             2             96  sun.nio.cs.StreamEncoder (java.base@17.0.8)
  85:             2             96  sun.nio.cs.UTF_8$Encoder (java.base@17.0.8)
  86:             1             88  java.lang.reflect.Method (java.base@17.0.8)
  87:             2             80  [Ljava.lang.OutOfMemoryError; (java.base@17.0.8)
  88:             5             80  [Ljava.security.Principal; (java.base@17.0.8)
  89:             1             80  [Ljava.util.WeakHashMap$Entry; (java.base@17.0.8)
  90:             2             80  java.io.BufferedWriter (java.base@17.0.8)
  91:             2             80  java.io.PrintStream (java.base@17.0.8)
  92:             2             80  java.lang.IllegalArgumentException (java.base@17.0.8)
  93:             2             80  java.lang.ModuleLayer (java.base@17.0.8)
  94:             2             80  java.lang.module.Configuration (java.base@17.0.8)
  95:             5             80  java.security.ProtectionDomain$Key (java.base@17.0.8)
  96:             2             80  sun.util.locale.LocaleObjectCache$CacheEntry (java.base@17.0.8)
  97:             3             72  jdk.internal.misc.Signal (java.base@17.0.8)
  98:             1             64  [Ljava.lang.reflect.Field; (java.base@17.0.8)
  99:             2             64  java.io.BufferedOutputStream (java.base@17.0.8)
 100:             2             64  java.io.FileOutputStream (java.base@17.0.8)
 101:             2             64  java.lang.ref.ReferenceQueue$Null (java.base@17.0.8)
 102:             1             64  java.net.URL (java.base@17.0.8)
 103:             2             64  java.util.HexFormat (java.base@17.0.8)
 104:             3             56  [Ljava.lang.Class; (java.base@17.0.8)
 105:             1             56  java.util.Properties (java.base@17.0.8)
 106:             2             48  [Ljava.security.ProtectionDomain; (java.base@17.0.8)
 107:             2             48  java.io.File$PathStatus (java.base@17.0.8)
 108:             2             48  java.io.OutputStreamWriter (java.base@17.0.8)
 109:             1             48  java.lang.NullPointerException (java.base@17.0.8)
 110:             3             48  java.nio.charset.CodingErrorAction (java.base@17.0.8)
 111:             2             48  java.util.ArrayDeque (java.base@17.0.8)
 112:             1             48  java.util.WeakHashMap (java.base@17.0.8)
 113:             3             48  jdk.internal.loader.ClassLoaderValue (java.base@17.0.8)
 114:             2             48  jdk.internal.misc.Signal$NativeHandler (java.base@17.0.8)
 115:             3             48  jdk.internal.module.ServicesCatalog (java.base@17.0.8)
 116:             1             48  jdk.internal.ref.CleanerImpl$PhantomCleanableRef (java.base@17.0.8)
 117:             1             40  java.io.BufferedInputStream (java.base@17.0.8)
 118:             1             40  java.lang.ArithmeticException (java.base@17.0.8)
 119:             1             40  java.lang.VirtualMachineError (java.base@17.0.8)
 120:             1             40  jdk.internal.loader.URLClassPath (java.base@17.0.8)
 121:             1             40  jdk.internal.ref.CleanerImpl$CleanerCleanable (java.base@17.0.8)
 122:             2             32  [Ljava.lang.StackTraceElement; (java.base@17.0.8)
 123:             1             32  [Ljava.lang.ThreadGroup; (java.base@17.0.8)
 124:             1             32  [Ljava.lang.module.ModuleDescriptor$Requires$Modifier; (java.base@17.0.8)
 125:             1             32  [Ljdk.internal.module.ServicesCatalog; (java.base@17.0.8)
 126:             1             32  java.io.File (java.base@17.0.8)
 127:             1             32  java.io.FileInputStream (java.base@17.0.8)
 128:             1             32  java.io.UnixFileSystem (java.base@17.0.8)
 129:             2             32  java.lang.Boolean (java.base@17.0.8)
 130:             1             32  java.lang.Module$ArchivedData (java.base@17.0.8)
 131:             2             32  java.lang.ThreadLocal (java.base@17.0.8)
 132:             1             32  java.lang.module.ModuleDescriptor$Version (java.base@17.0.8)
 133:             2             32  java.nio.ByteOrder (java.base@17.0.8)
 134:             1             32  java.util.Collections$UnmodifiableMap (java.base@17.0.8)
 135:             2             32  java.util.concurrent.atomic.AtomicInteger (java.base@17.0.8)
 136:             1             32  jdk.internal.loader.ArchivedClassLoaders (java.base@17.0.8)
 137:             1             32  jdk.internal.module.ArchivedModuleGraph (java.base@17.0.8)
 138:             1             32  sun.util.locale.BaseLocale$Key (java.base@17.0.8)
 139:             1             24  [Ljava.io.File$PathStatus; (java.base@17.0.8)
 140:             1             24  [Ljava.lang.reflect.Method; (java.base@17.0.8)
 141:             1             24  [Ljava.net.URL; (java.base@17.0.8)
 142:             1             24  [Ljava.util.jar.Manifest; (java.base@17.0.8)
 143:             1             24  java.lang.NamedPackage (java.base@17.0.8)
 144:             1             24  java.lang.RuntimePermission (java.base@17.0.8)
 145:             1             24  java.lang.StringBuilder (java.base@17.0.8)
 146:             1             24  java.lang.reflect.ReflectPermission (java.base@17.0.8)
 147:             1             24  java.security.BasicPermissionCollection (java.base@17.0.8)
 148:             1             24  java.security.Permissions (java.base@17.0.8)
 149:             1             24  java.util.Collections$EmptyMap (java.base@17.0.8)
 150:             1             24  java.util.Collections$SetFromMap (java.base@17.0.8)
 151:             1             24  java.util.Locale$Cache (java.base@17.0.8)
 152:             1             24  java.util.concurrent.atomic.AtomicLong (java.base@17.0.8)
 153:             1             24  jdk.internal.loader.URLClassPath$FileLoader (java.base@17.0.8)
 154:             1             24  jdk.internal.module.ModuleHashes (java.base@17.0.8)
 155:             1             24  jdk.internal.module.SystemModuleFinders$SystemModuleFinder (java.base@17.0.8)
 156:             1             24  jdk.internal.ref.CleanerImpl (java.base@17.0.8)
 157:             1             24  sun.nio.cs.StandardCharsets (java.base@17.0.8)
 158:             1             24  sun.nio.cs.UTF_8 (java.base@17.0.8)
 159:             1             24  sun.security.util.LazyCodeSourcePermissionCollection (java.base@17.0.8)
 160:             1             24  sun.util.locale.BaseLocale$Cache (java.base@17.0.8)
 161:             1             16  [Ljava.lang.Throwable; (java.base@17.0.8)
 162:             1             16  [Ljava.security.cert.Certificate; (java.base@17.0.8)
 163:             1             16  MemoryLeakExample$DataProcessor
 164:             1             16  java.io.FileDescriptor$1 (java.base@17.0.8)
 165:             1             16  java.lang.CharacterDataLatin1 (java.base@17.0.8)
 166:             1             16  java.lang.Runtime (java.base@17.0.8)
 167:             1             16  java.lang.String$CaseInsensitiveComparator (java.base@17.0.8)
 168:             1             16  java.lang.System$2 (java.base@17.0.8)
 169:             1             16  java.lang.Terminator$1 (java.base@17.0.8)
 170:             1             16  java.lang.invoke.MemberName$Factory (java.base@17.0.8)
 171:             1             16  java.lang.invoke.StringConcatFactory$1 (java.base@17.0.8)
 172:             1             16  java.lang.invoke.StringConcatFactory$2 (java.base@17.0.8)
 173:             1             16  java.lang.invoke.StringConcatFactory$3 (java.base@17.0.8)
 174:             1             16  java.lang.module.ModuleDescriptor$1 (java.base@17.0.8)
 175:             1             16  java.lang.ref.Cleaner (java.base@17.0.8)
 176:             1             16  java.lang.ref.Cleaner$1 (java.base@17.0.8)
 177:             1             16  java.lang.ref.Reference$1 (java.base@17.0.8)
 178:             1             16  java.lang.reflect.ReflectAccess (java.base@17.0.8)
 179:             1             16  java.net.URI$1 (java.base@17.0.8)
 180:             1             16  java.net.URL$3 (java.base@17.0.8)
 181:             1             16  java.net.URL$DefaultFactory (java.base@17.0.8)
 182:             1             16  java.nio.Buffer$1 (java.base@17.0.8)
 183:             1             16  java.security.ProtectionDomain$JavaSecurityAccessImpl (java.base@17.0.8)
 184:             1             16  java.security.SecureClassLoader$CodeSourceKey (java.base@17.0.8)
 185:             1             16  java.util.Collections$EmptyList (java.base@17.0.8)
 186:             1             16  java.util.Collections$EmptySet (java.base@17.0.8)
 187:             1             16  java.util.HashMap$EntrySet (java.base@17.0.8)
 188:             1             16  java.util.Optional (java.base@17.0.8)
 189:             1             16  java.util.WeakHashMap$KeySet (java.base@17.0.8)
 190:             1             16  jdk.internal.misc.ScopedMemoryAccess (java.base@17.0.8)
 191:             1             16  jdk.internal.misc.Unsafe (java.base@17.0.8)
 192:             1             16  jdk.internal.module.ArchivedBootLayer (java.base@17.0.8)
 193:             1             16  jdk.internal.module.ModuleLoaderMap$Mapper (java.base@17.0.8)
 194:             1             16  jdk.internal.module.ModulePatcher (java.base@17.0.8)
 195:             1             16  jdk.internal.module.ModuleTarget (java.base@17.0.8)
 196:             1             16  jdk.internal.reflect.ReflectionFactory (java.base@17.0.8)
 197:             1             16  sun.net.www.protocol.file.Handler (java.base@17.0.8)
Total         29036       47290376

3.7.3.2.第二次
jcmd {pid} GC.class_histogram
3195:
 num     #instances         #bytes  class name (module)
-------------------------------------------------------
   1:         15811       82597008  [B (java.base@17.0.8)
   2:          7710         185040  java.lang.String (java.base@17.0.8)
   3:          1428         177896  java.lang.Class (java.base@17.0.8)
   4:           879         129840  [Ljava.lang.Object; (java.base@17.0.8)
   5:             6          33016  [C (java.base@17.0.8)
   6:           998          31936  java.util.HashMap$Node (java.base@17.0.8)
   7:           467          30904  [I (java.base@17.0.8)
   8:           905          28960  java.util.concurrent.ConcurrentHashMap$Node (java.base@17.0.8)
   9:           257          23696  [Ljava.util.HashMap$Node; (java.base@17.0.8)
  10:            19          19312  [Ljava.util.concurrent.ConcurrentHashMap$Node; (java.base@17.0.8)
  11:           259          12432  java.util.HashMap (java.base@17.0.8)
  12:           341          10912  jdk.internal.math.FDBigInteger (java.base@17.0.8)
  13:           362           8688  java.lang.module.ModuleDescriptor$Exports (java.base@17.0.8)
  14:           256           6144  java.lang.Long (java.base@17.0.8)
  15:           248           5952  java.util.ImmutableCollections$Set12 (java.base@17.0.8)
  16:            62           4960  java.net.URI (java.base@17.0.8)
  17:           132           4224  java.lang.module.ModuleDescriptor$Requires (java.base@17.0.8)
  18:           256           4096  java.lang.Byte (java.base@17.0.8)
  19:           256           4096  java.lang.Integer (java.base@17.0.8)
  20:           256           4096  java.lang.Short (java.base@17.0.8)
  21:            62           3968  java.lang.module.ModuleDescriptor (java.base@17.0.8)
  22:            68           3808  java.lang.Module (java.base@17.0.8)
  23:            10           3680  java.lang.Thread (java.base@17.0.8)
  24:            62           3472  jdk.internal.module.ModuleReferenceImpl (java.base@17.0.8)
  25:           137           3288  java.util.ImmutableCollections$SetN (java.base@17.0.8)
  26:           196           3136  java.util.HashSet (java.base@17.0.8)
  27:            39           2496  java.util.concurrent.ConcurrentHashMap (java.base@17.0.8)
  28:           128           2048  java.lang.Character (java.base@17.0.8)
  29:            61           1952  jdk.internal.loader.BuiltinClassLoader$LoadedModule (java.base@17.0.8)
  30:             7           1864  [J (java.base@17.0.8)
  31:            62           1488  java.lang.module.ResolvedModule (java.base@17.0.8)
  32:            62           1488  jdk.internal.module.ServicesCatalog$ServiceProvider (java.base@17.0.8)
  33:            62           1488  jdk.internal.module.SystemModuleFinders$2 (java.base@17.0.8)
  34:            60           1440  java.lang.module.ModuleDescriptor$Provides (java.base@17.0.8)
  35:             1           1376  [Ljdk.internal.math.FDBigInteger; (java.base@17.0.8)
  36:            50           1200  java.util.ImmutableCollections$List12 (java.base@17.0.8)
  37:            72           1152  java.lang.Object (java.base@17.0.8)
  38:             1           1040  [Ljava.lang.Byte; (java.base@17.0.8)
  39:             1           1040  [Ljava.lang.Integer; (java.base@17.0.8)
  40:             1           1040  [Ljava.lang.Long; (java.base@17.0.8)
  41:             1           1040  [Ljava.lang.Short; (java.base@17.0.8)
  42:            24            960  java.io.ObjectStreamField (java.base@17.0.8)
  43:            60            960  jdk.internal.module.SystemModuleFinders$3 (java.base@17.0.8)
  44:            12            864  java.lang.reflect.Field (java.base@17.0.8)
  45:            30            720  java.util.concurrent.CopyOnWriteArrayList (java.base@17.0.8)
  46:            20            640  java.util.Locale (java.base@17.0.8)
  47:            20            640  sun.util.locale.BaseLocale (java.base@17.0.8)
  48:            26            624  java.util.jar.Attributes$Name (java.base@17.0.8)
  49:             1            528  [Ljava.lang.Character; (java.base@17.0.8)
  50:            13            520  java.security.AccessControlContext (java.base@17.0.8)
  51:             6            480  [S (java.base@17.0.8)
  52:            12            480  java.lang.OutOfMemoryError (java.base@17.0.8)
  53:             1            376  java.lang.ref.Finalizer$FinalizerThread (java.base@17.0.8)
  54:             1            376  jdk.internal.misc.InnocuousThread (java.base@17.0.8)
  55:             1            368  java.lang.ref.Reference$ReferenceHandler (java.base@17.0.8)
  56:            14            336  java.util.ImmutableCollections$ListN (java.base@17.0.8)
  57:             8            240  [Ljava.io.ObjectStreamField; (java.base@17.0.8)
  58:             7            224  java.util.Hashtable$Entry (java.base@17.0.8)
  59:             9            216  java.util.ArrayList (java.base@17.0.8)
  60:             5            200  java.security.ProtectionDomain (java.base@17.0.8)
  61:             5            200  java.util.WeakHashMap$Entry (java.base@17.0.8)
  62:             6            192  java.lang.ref.ReferenceQueue (java.base@17.0.8)
  63:             4            160  java.security.CodeSource (java.base@17.0.8)
  64:             5            160  java.util.ImmutableCollections$MapN (java.base@17.0.8)
  65:             5            144  [Ljava.lang.String; (java.base@17.0.8)
  66:             3            144  java.lang.ThreadGroup (java.base@17.0.8)
  67:             6            144  java.lang.module.ModuleDescriptor$Requires$Modifier (java.base@17.0.8)
  68:             3            144  java.util.Hashtable (java.base@17.0.8)
  69:             3            128  [Ljava.util.Hashtable$Entry; (java.base@17.0.8)
  70:             2            128  java.lang.Class$ReflectionData (java.base@17.0.8)
  71:             8            128  java.lang.ref.ReferenceQueue$Lock (java.base@17.0.8)
  72:             4            128  jdk.internal.loader.NativeLibraries (java.base@17.0.8)
  73:             3            120  java.io.FileDescriptor (java.base@17.0.8)
  74:             3            120  java.lang.ref.SoftReference (java.base@17.0.8)
  75:             3            112  [Ljava.lang.Thread; (java.base@17.0.8)
  76:             2            112  [Ljava.lang.invoke.MethodHandle; (java.base@17.0.8)
  77:             2            112  java.nio.HeapByteBuffer (java.base@17.0.8)
  78:             1            104  jdk.internal.loader.ClassLoaders$AppClassLoader (java.base@17.0.8)
  79:             1            104  jdk.internal.loader.ClassLoaders$BootClassLoader (java.base@17.0.8)
  80:             1            104  jdk.internal.loader.ClassLoaders$PlatformClassLoader (java.base@17.0.8)
  81:             1             96  [Lsun.util.locale.BaseLocale; (java.base@17.0.8)
  82:             3             96  java.lang.invoke.MethodHandles$Lookup (java.base@17.0.8)
  83:             4             96  java.lang.module.ModuleDescriptor$Opens (java.base@17.0.8)
  84:             2             96  sun.nio.cs.StreamEncoder (java.base@17.0.8)
  85:             2             96  sun.nio.cs.UTF_8$Encoder (java.base@17.0.8)
  86:             1             88  java.lang.reflect.Method (java.base@17.0.8)
  87:             2             80  [Ljava.lang.OutOfMemoryError; (java.base@17.0.8)
  88:             5             80  [Ljava.security.Principal; (java.base@17.0.8)
  89:             1             80  [Ljava.util.WeakHashMap$Entry; (java.base@17.0.8)
  90:             2             80  java.io.BufferedWriter (java.base@17.0.8)
  91:             2             80  java.io.PrintStream (java.base@17.0.8)
  92:             2             80  java.lang.IllegalArgumentException (java.base@17.0.8)
  93:             2             80  java.lang.ModuleLayer (java.base@17.0.8)
  94:             2             80  java.lang.module.Configuration (java.base@17.0.8)
  95:             5             80  java.security.ProtectionDomain$Key (java.base@17.0.8)
  96:             2             80  sun.util.locale.LocaleObjectCache$CacheEntry (java.base@17.0.8)
  97:             3             72  jdk.internal.misc.Signal (java.base@17.0.8)
  98:             1             64  [Ljava.lang.reflect.Field; (java.base@17.0.8)
  99:             2             64  java.io.BufferedOutputStream (java.base@17.0.8)
 100:             2             64  java.io.FileOutputStream (java.base@17.0.8)
 101:             2             64  java.lang.ref.ReferenceQueue$Null (java.base@17.0.8)
 102:             1             64  java.net.URL (java.base@17.0.8)
 103:             2             64  java.util.HexFormat (java.base@17.0.8)
 104:             3             56  [Ljava.lang.Class; (java.base@17.0.8)
 105:             1             56  java.util.Properties (java.base@17.0.8)
 106:             2             48  [Ljava.security.ProtectionDomain; (java.base@17.0.8)
 107:             2             48  java.io.File$PathStatus (java.base@17.0.8)
 108:             2             48  java.io.OutputStreamWriter (java.base@17.0.8)
 109:             1             48  java.lang.NullPointerException (java.base@17.0.8)
 110:             3             48  java.nio.charset.CodingErrorAction (java.base@17.0.8)
 111:             2             48  java.util.ArrayDeque (java.base@17.0.8)
 112:             1             48  java.util.WeakHashMap (java.base@17.0.8)
 113:             3             48  jdk.internal.loader.ClassLoaderValue (java.base@17.0.8)
 114:             2             48  jdk.internal.misc.Signal$NativeHandler (java.base@17.0.8)
 115:             3             48  jdk.internal.module.ServicesCatalog (java.base@17.0.8)
 116:             1             48  jdk.internal.ref.CleanerImpl$PhantomCleanableRef (java.base@17.0.8)
 117:             1             40  java.io.BufferedInputStream (java.base@17.0.8)
 118:             1             40  java.lang.ArithmeticException (java.base@17.0.8)
 119:             1             40  java.lang.VirtualMachineError (java.base@17.0.8)
 120:             1             40  jdk.internal.loader.URLClassPath (java.base@17.0.8)
 121:             1             40  jdk.internal.ref.CleanerImpl$CleanerCleanable (java.base@17.0.8)
 122:             2             32  [Ljava.lang.StackTraceElement; (java.base@17.0.8)
 123:             1             32  [Ljava.lang.ThreadGroup; (java.base@17.0.8)
 124:             1             32  [Ljava.lang.module.ModuleDescriptor$Requires$Modifier; (java.base@17.0.8)
 125:             1             32  [Ljdk.internal.module.ServicesCatalog; (java.base@17.0.8)
 126:             1             32  java.io.File (java.base@17.0.8)
 127:             1             32  java.io.FileInputStream (java.base@17.0.8)
 128:             1             32  java.io.UnixFileSystem (java.base@17.0.8)
 129:             2             32  java.lang.Boolean (java.base@17.0.8)
 130:             1             32  java.lang.Module$ArchivedData (java.base@17.0.8)
 131:             2             32  java.lang.ThreadLocal (java.base@17.0.8)
 132:             1             32  java.lang.module.ModuleDescriptor$Version (java.base@17.0.8)
 133:             2             32  java.nio.ByteOrder (java.base@17.0.8)
 134:             1             32  java.util.Collections$UnmodifiableMap (java.base@17.0.8)
 135:             2             32  java.util.concurrent.atomic.AtomicInteger (java.base@17.0.8)
 136:             1             32  jdk.internal.loader.ArchivedClassLoaders (java.base@17.0.8)
 137:             1             32  jdk.internal.module.ArchivedModuleGraph (java.base@17.0.8)
 138:             1             32  sun.util.locale.BaseLocale$Key (java.base@17.0.8)
 139:             1             24  [Ljava.io.File$PathStatus; (java.base@17.0.8)
 140:             1             24  [Ljava.lang.reflect.Method; (java.base@17.0.8)
 141:             1             24  [Ljava.net.URL; (java.base@17.0.8)
 142:             1             24  [Ljava.util.jar.Manifest; (java.base@17.0.8)
 143:             1             24  java.lang.NamedPackage (java.base@17.0.8)
 144:             1             24  java.lang.RuntimePermission (java.base@17.0.8)
 145:             1             24  java.lang.StringBuilder (java.base@17.0.8)
 146:             1             24  java.lang.reflect.ReflectPermission (java.base@17.0.8)
 147:             1             24  java.security.BasicPermissionCollection (java.base@17.0.8)
 148:             1             24  java.security.Permissions (java.base@17.0.8)
 149:             1             24  java.util.Collections$EmptyMap (java.base@17.0.8)
 150:             1             24  java.util.Collections$SetFromMap (java.base@17.0.8)
 151:             1             24  java.util.Locale$Cache (java.base@17.0.8)
 152:             1             24  java.util.concurrent.atomic.AtomicLong (java.base@17.0.8)
 153:             1             24  jdk.internal.loader.URLClassPath$FileLoader (java.base@17.0.8)
 154:             1             24  jdk.internal.module.ModuleHashes (java.base@17.0.8)
 155:             1             24  jdk.internal.module.SystemModuleFinders$SystemModuleFinder (java.base@17.0.8)
 156:             1             24  jdk.internal.ref.CleanerImpl (java.base@17.0.8)
 157:             1             24  sun.nio.cs.StandardCharsets (java.base@17.0.8)
 158:             1             24  sun.nio.cs.UTF_8 (java.base@17.0.8)
 159:             1             24  sun.security.util.LazyCodeSourcePermissionCollection (java.base@17.0.8)
 160:             1             24  sun.util.locale.BaseLocale$Cache (java.base@17.0.8)
 161:             1             16  [Ljava.lang.Throwable; (java.base@17.0.8)
 162:             1             16  [Ljava.security.cert.Certificate; (java.base@17.0.8)
 163:             1             16  MemoryLeakExample$DataProcessor
 164:             1             16  java.io.FileDescriptor$1 (java.base@17.0.8)
 165:             1             16  java.lang.CharacterDataLatin1 (java.base@17.0.8)
 166:             1             16  java.lang.Runtime (java.base@17.0.8)
 167:             1             16  java.lang.String$CaseInsensitiveComparator (java.base@17.0.8)
 168:             1             16  java.lang.System$2 (java.base@17.0.8)
 169:             1             16  java.lang.Terminator$1 (java.base@17.0.8)
 170:             1             16  java.lang.invoke.MemberName$Factory (java.base@17.0.8)
 171:             1             16  java.lang.invoke.StringConcatFactory$1 (java.base@17.0.8)
 172:             1             16  java.lang.invoke.StringConcatFactory$2 (java.base@17.0.8)
 173:             1             16  java.lang.invoke.StringConcatFactory$3 (java.base@17.0.8)
 174:             1             16  java.lang.module.ModuleDescriptor$1 (java.base@17.0.8)
 175:             1             16  java.lang.ref.Cleaner (java.base@17.0.8)
 176:             1             16  java.lang.ref.Cleaner$1 (java.base@17.0.8)
 177:             1             16  java.lang.ref.Reference$1 (java.base@17.0.8)
 178:             1             16  java.lang.reflect.ReflectAccess (java.base@17.0.8)
 179:             1             16  java.net.URI$1 (java.base@17.0.8)
 180:             1             16  java.net.URL$3 (java.base@17.0.8)
 181:             1             16  java.net.URL$DefaultFactory (java.base@17.0.8)
 182:             1             16  java.nio.Buffer$1 (java.base@17.0.8)
 183:             1             16  java.security.ProtectionDomain$JavaSecurityAccessImpl (java.base@17.0.8)
 184:             1             16  java.security.SecureClassLoader$CodeSourceKey (java.base@17.0.8)
 185:             1             16  java.util.Collections$EmptyList (java.base@17.0.8)
 186:             1             16  java.util.Collections$EmptySet (java.base@17.0.8)
 187:             1             16  java.util.HashMap$EntrySet (java.base@17.0.8)
 188:             1             16  java.util.Optional (java.base@17.0.8)
 189:             1             16  java.util.WeakHashMap$KeySet (java.base@17.0.8)
 190:             1             16  jdk.internal.misc.ScopedMemoryAccess (java.base@17.0.8)
 191:             1             16  jdk.internal.misc.Unsafe (java.base@17.0.8)
 192:             1             16  jdk.internal.module.ArchivedBootLayer (java.base@17.0.8)
 193:             1             16  jdk.internal.module.ModuleLoaderMap$Mapper (java.base@17.0.8)
 194:             1             16  jdk.internal.module.ModulePatcher (java.base@17.0.8)
 195:             1             16  jdk.internal.module.ModuleTarget (java.base@17.0.8)
 196:             1             16  jdk.internal.reflect.ReflectionFactory (java.base@17.0.8)
 197:             1             16  sun.net.www.protocol.file.Handler (java.base@17.0.8)
Total         32554       83383480

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/627402.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

实物仿真平台设计方案:927-8路GMSL视频注入回灌的自动驾驶半实物仿真平台

8路GMSL视频注入回灌的自动驾驶半实物仿真平台 一、平台介绍 产品基于8路GMSL视频注入回灌的自动驾驶半实物仿真平台旨在提高实验室及研究生院师生在基础软件层开发、计算机视觉和深度学习方面的专业知识学习和实践能力&#xff0c;为师生提供一个稳定软件开发和多精度框…

【C++】认识C++(上)

目录 从C到C命名空间同名冲突命名空间的定义命名空间的使用 C的输入和输出缺省参数&#xff08;默认参数&#xff09; 从C到C C语言的出现是计算机科学和工程史上的一个重要里程碑&#xff0c;许多现代计算机语言都受C语言的影响。C语言是面向过程的&#xff0c;结构化和模块化…

优选算法——双指针2

题目一——有效三角形的个数 思路 先审题 举个例子&#xff0c;下面一个序列可分成4个三元组 然后我们论证哪个可以组成三角形即可 判断三个数能不能组成三角形&#xff1a;任意两边之和大于第三边 注意第一个和第四个&#xff0c;有人说&#xff0c;这不是两个相同的吗&#…

【opencv】opencv透视变换和ocr识别实验

实验环境&#xff1a;anaconda、jupyter notebook 实验用到的包opencv、numpy、matplotlib、tesseract 一、opencv透视变换 原图 图片是我拍的耳机说明书&#xff0c;哈哈哈哈&#xff0c;你也可以使用自己拍的照片&#xff0c;最好是英文内容&#xff0c;tesseract默认识别英…

JVM运行时内存整体结构一览

文章目录 Java 虚拟机 (JVM) 运行时内存由程序计时器, 堆, 方法区, 本地方法栈, 虚拟机栈,构成 Java 虚拟机 (JVM) 运行时内存布局主要包括以下几个部分&#xff1a; 程序计数器 (Program Counter Register): 每个线程都有一个程序计数器&#xff0c;它是当前线程执行的字节码…

【js逆向】易车网JS逆向案例实战手把手教学(附完整代码)

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…

删除表空间

Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 当某个表空间中的数据不再需要时&#xff0c;或者新创建的表空间不符合要求时&#xff0c;可以考虑删除这个表空间。若要删除表空间&#xff0c;则需要用户具有 DROP TABLESP…

OpenNJet产品体验:探索无限可能

文章目录 前言一、OpenNJet是什么&#xff1f;二、OpenNJet特性和优点三、OpenNJet功能规划四、OpenNJet快速上手五、OpenNJet的使用总结 前言 现代社会网络高速发展&#xff0c;同时也迎来了互联网发展的高峰&#xff0c;OpenNJet作为一个基于NGINX的面向互联网和云原生应用提…

【C语言每日题解】三题:回文检查、刘备 关羽 张飞三人过年放鞭炮、犹太人死亡游戏(难度up,推荐⭐✨)

&#x1f970;欢迎关注 轻松拿捏C语言系列&#xff0c;来和 小哇 一起进步&#xff01;✊ &#x1f308;感谢大家的阅读、点赞、收藏和关注 &#x1f970;希望大家喜欢我本次的讲解 &#x1f31f;非常推荐最后一道题 &#x1f339; 犹太人死亡游戏&#xff0c;建议观看 &…

20240514,算法(算数生成,集合)

还有一个大案例&#xff0c;那个就不急了&#xff0c;完结撒花&#xff0c;起码C是打代码没什么大问题的完结&#xff0c;不像C&#xff0c;还要我返工/笑哭 常用算数生成算法 属于小算法&#xff0c;头文件 #include <numeric> accumulate //计算容器累计总和fill /…

考研数学|李林《880》PK李永乐《660》,你用对了吗?

建议先在强化之前做660&#xff0c;然后在强化的时候再做880。 660整体难度属于基础阶段到强化阶段。而且是选填部分的题目&#xff0c;所以还是要做一些其他题 然后说一下推荐的习题册&#xff1a;基础不好先做1800、强化之前660&#xff0c;强化可选880/1000题。但是传统习题…

FPGA - Xilinx系列高速收发器---GTX

1&#xff0c;GTX是什么&#xff1f; GT &#xff1a;Gigabit Transceiver千兆比特收发器&#xff1b; GTX &#xff1a;Xilinx 7系列FPGA的高速串行收发器&#xff0c;硬核 xilinx的7系列FPGA根据不同的器件类型&#xff0c;集成了GTP、GTX、GTH、GTZ四种串行高速收发器&am…

Ansible自动化运维中的User用户管理模块应用详解

作者主页&#xff1a;点击&#xff01; Ansible专栏&#xff1a;点击&#xff01; 创作时间&#xff1a;2024年5月14日14点12分 在Ansible中&#xff0c;user 模块主要用于管理系统用户账户。它可以创建、修改、删除用户&#xff0c;并管理用户的属性&#xff0c;比如密码、…

深⼊理解指针(5)

目录 1. 回调函数是什么&#xff1f;1.1 使用回调函数修改 2. qsort使⽤举例2.1 使⽤qsort函数排序整型数2.2 使⽤qsort排序结构数据按年龄排序2.3 使⽤qsort排序结构数据按名字排序2.4整体代码 3. qsort函数的模拟实现3.1 整型数组的实现3.2 结构体按名字排序实现3.3 结构体按…

Element Plus组件库使用组件自动导入后样式不生效的问题

首先按照官方文档上的介绍进行配置&#xff1a;快速开始 | Element Plus (element-plus.org) 配置完成后&#xff0c;去组件中去测试组件库中的button组件的样式是否生效 <template><el-button type"primary">Primary</el-button> </template&…

从源头到洞察:大数据时代的数据提取与分析实战指南

随着科技的飞速发展&#xff0c;大数据已经成为现代社会的核心驱动力之一。从商业决策到科学研究&#xff0c;从政策制定到个人生活&#xff0c;数据无处不在&#xff0c;影响着我们的每一个决策。然而&#xff0c;如何从海量的数据中提取有价值的信息&#xff0c;并转化为深刻…

一对一WebRTC视频通话系列(六)——部署到公网

本系列博客主要记录一对一WebRTC视频通话实现过程中的一些重点&#xff0c;代码全部进行了注释&#xff0c;便于理解WebRTC整体实现。 本专栏知识点是通过<零声教育>的音视频流媒体高级开发课程进行系统学习&#xff0c;梳理总结后写下文章&#xff0c;对音视频相关内容感…

Milvus 安装与配置

一、环境准备 在安装 Milvus 之前&#xff0c;确保你的系统满足以下要求&#xff1a; 操作系统&#xff1a;Milvus 支持 Linux 操作系统&#xff0c;如 Ubuntu、CentOS 等。硬件资源&#xff1a;推荐使用具有足够 CPU、内存和 SSD 存储的机器。对于大规模数据集&#xff0c;高…

环境光遮蔽技术在AI去衣应用中的创新探索

引言&#xff1a; 随着计算机视觉和人工智能技术的飞速发展&#xff0c;AI去衣技术逐渐走进公众视野。这一技术以其独特的应用前景和技术挑战引起了广泛的关注。在实现衣物去除的同时保持图像质量的关键技术之一&#xff0c;便是环境光遮蔽技术。本文将深入探讨环境光遮蔽技术在…

Python轻量级Web框架Flask(14)—— 自己做Flask项目总结

0、前言&#xff1a; 本文意在记录自己在做毕业Flask项目开发时遇到的一些问题&#xff0c;并将问题解决方案记录下来&#xff0c;可做日后查询本文也会记录自己做FLask项目时实现的一些功能&#xff0c;作为开发工作的进程记录注意&#xff1a;用Flask开发的前提是已经设计好…