1 回答

TA貢獻(xiàn)1995條經(jīng)驗 獲得超2個贊
您看到的內(nèi)存使用情況是 JVM 本身用來維持其工作的。如果您-verbose在運行應(yīng)用程序時提供選項,您將看到許多類被加載到元空間中:
(在我的 JVM 上加載的類)
[Loaded java.lang.Object from C:\Program Files\Java\jdk1.8.0_45\jre\lib\rt.jar]
[Loaded java.io.Serializable from C:\Program Files\Java\jdk1.8.0_45\jre\lib\rt.jar]
[Loaded java.lang.Comparable from C:\Program Files\Java\jdk1.8.0_45\jre\lib\rt.jar]
[Loaded java.lang.CharSequence from C:\Program Files\Java\jdk1.8.0_45\jre\lib\rt.jar]
[Loaded java.lang.String from C:\Program Files\Java\jdk1.8.0_45\jre\lib\rt.jar]
[Loaded java.lang.reflect.AnnotatedElement from C:\Program Files\Java\jdk1.8.0_45\jre\lib\rt.jar]
[Loaded java.lang.reflect.GenericDeclaration from C:\Program Files\Java\jdk1.8.0_45\jre\lib\rt.jar]
[Loaded java.lang.reflect.Type from C:\Program Files\Java\jdk1.8.0_45\jre\lib\rt.jar]
[Loaded java.lang.Class from C:\Program Files\Java\jdk1.8.0_45\jre\lib\rt.jar]
[Loaded java.lang.Cloneable from C:\Program Files\Java\jdk1.8.0_45\jre\lib\rt.jar]
[Loaded java.lang.ClassLoader from C:\Program Files\Java\jdk1.8.0_45\jre\lib\rt.jar]
[Loaded java.lang.System from C:\Program Files\Java\jdk1.8.0_45\jre\lib\rt.jar]
[Loaded java.lang.Throwable from C:\Program Files\Java\jdk1.8.0_45\jre\lib\rt.jar]
...
and many many more
它們具有靜態(tài)字段,其中的對象在堆中分配,這些對象消耗內(nèi)存。
并且不要忘記內(nèi)部 JVM 服務(wù),例如 GC、JMX 和 RMI,它們也可以隱式實例化并消耗一些內(nèi)存。
PS 如果您想獲取更多關(guān)于到底加載到堆中的內(nèi)容以及每個對象消耗多少內(nèi)存的信息,您可以使用任何分析實用程序(例如 VisualVM)檢查 JVM 堆轉(zhuǎn)儲。
添加回答
舉報