Подтвердить что ты не робот

Значение сообщений "Разгрузочный класс"

Кто-нибудь может объяснить, почему строки ниже отображаются в выходной консоли во время выполнения?

(одним возможным ответом будет полный permGen, но это можно исключить, поскольку программа использует только 24MB из max100MB, доступного в PermGen)

[Разгрузка класса 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: дс
-Xloggc:/logs/gc.log

В куче и в permGen много места.

4b9b3361

Ответ 1

Эти классы хранятся как softreferences, которые всегда соответствуют GC. GC сам по себе не работает только при достижении максимальной памяти, он также запускается, когда есть место для него, если вы понимаете, что я имею в виду.

Эти классы, кстати, используются "под капотами" API-интерфейса Serialization, который использует отражение для доступа к полям и вызывает методы.


Обновить: для регистрации разгрузки класса в stdout вместо пути, указанного в -Xloggc, для этой проблемы был указан отчет: Ошибка ID 6637203. Это было исправлено 4 месяца назад. Обновите свою JVM до последней версии.