[英]Unloading class messages in stdout logs without -XX:+CMSClassUnloadingEnabled
[英]Meaning of the “Unloading class” messages
任何人都可以解釋為什么下面的行在運行時出現在輸出控制台中?
(一個可能的答案是完全permGen,但這可以排除,因為該程序僅使用PermGen中可用的max100MB中的24MB)
[卸載類sun.reflect.GeneratedSerializationConstructorAccessor28]
[卸載類sun.reflect.GeneratedSerializationConstructorAccessor14]
[卸載類sun.reflect.GeneratedSerializationConstructorAccessor4]
[卸載類sun.reflect.GeneratedMethodAccessor5]
[卸載類sun.reflect.GeneratedSerializationConstructorAccessor38]
[卸載類sun.reflect.GeneratedSerializationConstructorAccessor36]
[卸載類sun.reflect.GeneratedSerializationConstructorAccessor22]
[卸載類sun.reflect.GeneratedSerializationConstructorAccessor8]
[卸載類sun.reflect.GeneratedSerializationConstructorAccessor39]
[卸載類sun.reflect.GeneratedSerializationConstructorAccessor16]
[卸載類sun.reflect.GeneratedSerializationConstructorAccessor2]
[卸載類sun.reflect.GeneratedConstructorAccessor1]
該程序使用以下參數運行:
-Xmx160M
-XX:MaxPermSize參數= 96M
-XX:PermSize = 96M
-XX:+ UseConcMarkSweepGC
-XX:+ UseParNewGC
-XX:+ PrintGCTaskTimeStamps
-XX:+ PrintHeapAtGC
-XX:+ PrintTenuringDistribution
-XX:+ PrintGCDetails
-XX:+ PrintGCDateStamps
-XX:+ PrintGCTimeStamps
-verbose:GC
-Xloggc:/logs/gc.log
堆中和permGen中有足夠的空間。
這些類作為軟引用保存 ,始終符合GC的條件。 GC本身並不僅在達到最大內存時運行,如果你理解我的意思,它也會在有空間時運行。
順便說一下,這些類是在Serialization API的“引擎蓋”下使用的,它使用反射來訪問字段並調用方法。
更新 :關於將類卸載記錄到stdout而不是-Xloggc
指定的路徑,已經出現了針對此問題的錯誤報告 : 錯誤ID 6637203 。 4個月后修復了這個問題。 將JVM升級到最新版本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.