任何人都可以解釋爲什麼在運行時在輸出控制檯中出現以下行:「卸載類」消息的含義
(一個可能的答案是完全PermGen的,但這是可以排除,因爲該程序只使用24MB出PermGen的可用max100MB的)
[卸載類sun.reflect.GeneratedSerializationConstructorAccessor28]
[卸載類sun.reflect.GeneratedSerializationConstructorAccessor14]
[卸載類sun.reflect.GeneratedSerializationConstructorAccessor4]
[卸載類sun.reflect.GeneratedMethodAccessor5]
[卸載類sun.reflect.Gen eratedSerializationConstructorAccessor38]
[卸載類sun.reflect.GeneratedSerializationConstructorAccessor36]
[卸載類sun.reflect.GeneratedSerializationConstructorAccessor22]
[卸載類sun.reflect.GeneratedSerializationConstructorAccessor8]
[卸載類sun.reflect.GeneratedSerializationConstructorAccessor39]
[卸class sun.reflect.GeneratedSerializationConstructorAccessor16]
[卸載類sun.reflect.GeneratedSerializationConstructorAccessor2]
[卸載類sun.reflect.GeneratedConstructorAccessor1]
程序運行具有以下PARAMS:
-Xmx160M
-XX:MaxPermSize參數= 96M
-XX:PermSize = 96M
-XX:+ UseConcMarkSweepGC
-XX:+ UseParNewGC
-XX:+ PrintGCTaskTimeStamps
-XX:+ PrintHeapAtGC
-XX:+ PrintTenuringDistribution
-XX:+ PrintGCDetails
-XX:+ Pr的intGCDateStamps
-XX:+ PrintGCTimeStamps
-verbose:GC
-Xloggc:/logs/gc.log
有足夠的空間在堆和PermGen的。
謝謝 - 我明白你的意思了......但爲什麼這些消息專門指向輸出控制檯而不是gc日誌?他們是否有某種特殊的意義(可能會影響績效)? – Eleco 2010-05-14 12:30:37
據我所知,它默認是不記錄的。只有使用'-verbosegc'參數時纔會記錄。你如何執行JVM?你(或IDE)使用哪些論點?這應該不會有性能影響。 GC通常只在有空間時運行(即JVM無其他事情)或者在達到最大內存的最後時刻運行。這些日誌僅用於非正式/調試目的。 – BalusC 2010-05-14 12:35:41
我編輯了原始問題以包含使用的JVM切換器......我本以爲任何與gc有關的消息都會轉到gc.log日誌文件,但是可能再次清除softreferences是一種特殊情況。 – Eleco 2010-05-14 12:45:51