Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JVM内存使用量超过操作系统报告的数量_Java_Memory Management_Garbage Collection_Off Heap - Fatal编程技术网

Java JVM内存使用量超过操作系统报告的数量

Java JVM内存使用量超过操作系统报告的数量,java,memory-management,garbage-collection,off-heap,Java,Memory Management,Garbage Collection,Off Heap,我有一个JVM,它报告提交的堆内存大约为8GB(其他部分应该超过这个)。但我的操作系统显示内存使用量约为5GB。我知道,由于非堆、元空间等原因,内存使用量可能会超过提交的内存,但怎么可能低于jvm报告的使用量呢 free的输出显示5.5GB的内存使用量 #free -m total used free shared buff/cache available Mem: 24115 5536

我有一个JVM,它报告提交的堆内存大约为8GB(其他部分应该超过这个)。但我的操作系统显示内存使用量约为5GB。我知道,由于非堆、元空间等原因,内存使用量可能会超过提交的内存,但怎么可能低于jvm报告的使用量呢

free的输出显示5.5GB的内存使用量

#free -m
          total        used        free      shared  buff/cache   available
Mem:          24115        5536       16355          10        2223       18209
Swap:             0           0           0
本机内存跟踪器(NMT)的输出显示保留内存约为11 GB

#jcmd <pid> VM.native_memory


Total: reserved=12904933KB, committed=11679661KB
-                 Java Heap (reserved=8388608KB, committed=8388608KB)
                            (mmap: reserved=8388608KB, committed=8388608KB)

-                     Class (reserved=1161913KB, committed=127417KB)
                            (classes #20704)
                            (malloc=2745KB #33662)
                            (mmap: reserved=1159168KB, committed=124672KB)

-                    Thread (reserved=2585224KB, committed=2585224KB)
                            (thread #2505)
                            (stack: reserved=2574004KB, committed=2574004KB)
                            (malloc=8286KB #12532)
                            (arena=2934KB #5004)

-                      Code (reserved=264623KB, committed=90231KB)
                            (malloc=15023KB #22507)
                            (mmap: reserved=249600KB, committed=75208KB)

-                        GC (reserved=378096KB, committed=378096KB)
                            (malloc=34032KB #45794)
                            (mmap: reserved=344064KB, committed=344064KB)

-                  Compiler (reserved=776KB, committed=776KB)
                            (malloc=645KB #1914)
                            (arena=131KB #7)

-                  Internal (reserved=53892KB, committed=53892KB)
                            (malloc=53860KB #67113)
                            (mmap: reserved=32KB, committed=32KB)

-                    Symbol (reserved=26569KB, committed=26569KB)
                            (malloc=22406KB #204673)
                            (arena=4163KB #1)

-    Native Memory Tracking (reserved=6756KB, committed=6756KB)
                            (malloc=494KB #6248)
                            (tracking overhead=6262KB)

-               Arena Chunk (reserved=11636KB, committed=11636KB)
                            (malloc=11636KB)

-                   Tracing (reserved=10456KB, committed=10456KB)
                            (malloc=10456KB #787)

-                   Unknown (reserved=16384KB, committed=0KB)
                            (mmap: reserved=16384KB, committed=0KB)
我已经阅读了一些非常棒的答案,比如这很好地解释了NMT,但它没有解决这个问题。我想了解这是如何做到的。

重复的 这与上述答案中解释的保留/提交/驻留内存之间的差异有关

结束此问题。

请参阅
java version "1.8.0_172"
Java(TM) SE Runtime Environment (build 1.8.0_172-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.172-b11, mixed mode)