亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

jdk 8運行空main函數,為什么PSYoungGen已經使用了大約1000k空間

jdk 8運行空main函數,為什么PSYoungGen已經使用了大約1000k空間

嗶嗶one 2023-08-04 14:42:23
當我運行一個空的 main 函數并打印 gc 詳細信息時,但看到 PSYoungGen 使用了大約 1000k 空間,我沒有分配任何對象,為什么它已經使用了大約 1000k 空間?代碼如下:public class Test {    public static void main(String[] args) {    }}GC詳細信息如下(可以看到使用的1374K):Heap PSYoungGen      total 2048K, used 1374K [0x00000007bfd80000, 0x00000007c0000000, 0x00000007c0000000)  eden space 1536K, 89% used [0x00000007bfd80000,0x00000007bfed7ba0,0x00000007bff00000)  from space 512K, 0% used [0x00000007bff80000,0x00000007bff80000,0x00000007c0000000)  to   space 512K, 0% used [0x00000007bff00000,0x00000007bff00000,0x00000007bff80000) ParOldGen       total 5632K, used 0K [0x00000007bf800000, 0x00000007bfd80000, 0x00000007bfd80000)  object space 5632K, 0% used [0x00000007bf800000,0x00000007bf800000,0x00000007bfd80000) Metaspace       used 2914K, capacity 4496K, committed 4864K, reserved 1056768K  class space    used 319K, capacity 388K, committed 512K, reserved 1048576Kvm選項如下:-Xms8m -Xmx8m -XX:+PrintGCDetails
查看完整描述

1 回答

?
拉風的咖菲貓

TA貢獻1995條經驗 獲得超2個贊

您看到的內存使用情況是 JVM 本身用來維持其工作的。如果您-verbose在運行應用程序時提供選項,您將看到許多類被加載到元空間中:


(在我的 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

它們具有靜態字段,其中的對象在堆中分配,這些對象消耗內存。


并且不要忘記內部 JVM 服務,例如 GC、JMX 和 RMI,它們也可以隱式實例化并消耗一些內存。


PS 如果您想獲取更多關于到底加載到堆中的內容以及每個對象消耗多少內存的信息,您可以使用任何分析實用程序(例如 VisualVM)檢查 JVM 堆轉儲。


查看完整回答
反對 回復 2023-08-04
  • 1 回答
  • 0 關注
  • 142 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號