Събиране на отпадъци от слънце и JRockit

В Sun JVM класовете, които се зареждат от зареждащото средство за класове, се поставят в permgen пространство и никога не се gc'd. (Освен ако зареждащият клас излезе извън обхвата) Доколкото разбирам, JRockit поставя същите тези данни в купчината вместо това. Тогава тези данни подлежат ли на събиране на боклук?

Благодаря.


person Striker    schedule 06.04.2010    source източник


Отговори (2)


Проблемът няма нищо общо с къде се разпределят класовете. Проблемът е, че зареждащите класове винаги поддържат препратки към своите класове, което означава, че класовете не могат да бъдат събирани за боклук, освен ако и докато техният зареждащ модул за класове не започне да събира боклук.

Този проблем е просто по-очевиден при HotSpot, защото паметта на PermGen е оскъдна и скъпа.

person Jörg W Mittag    schedule 06.04.2010

Друг важен момент обаче е, че PermGen често се изчерпва в Sun, при което други JVM могат да разпределят в друго не толкова ограничено пространство.

person Jé Queue    schedule 23.04.2010
comment
Да, харесва ми начина, по който JRockit се справя много по-добре от Sun. - person Striker; 28.04.2010
comment
Някои твърдят, че IBM също го прави. Обратната страна на това е, че понякога можете да добавите много към текста на класа и може да не е най-лесното откриване на течове или задържан текст. Sun ви позволява поне да докладвате малко по-лесно за данните, които се съхраняват там, и превантивно да настройвате. - person Jé Queue; 29.04.2010