Я получаю ошибку пространства PermGen на Sun JVM (1.6.0_21-b06) (Хорошо, это Oracle :)). Увеличение значения опции -XX:MaxPermGen не помогает. Я знаю, что PermGen — это пространство, предназначенное для постоянных объектов, таких как метаданные класса. Количество классов в проекте не такое уж большое ~ 10 000. Перед крахом jvisualvm показывает 57MB как Used PermGen.
Я предполагаю, что какой-то алгоритм занимает всю доступную память. Кто-нибудь знает примеры алгоритмов, приводящих к переполнению PermGen?
UPD. Такой абстрактный вопрос задаю, потому что в данный момент не могу пользоваться никаким профилировщиком - код крашится настолько сильно, что jvisualvm и eclipse перестают реагировать. Мне нужно убить Java-процессы с терминала с помощью kill -KILL {process_numer}. Я работаю с плохо организованным (но коммерческим) кодом, который имеет много потоков и обмен сообщениями JMS. Отладка - это беспорядок - сначала мне нужно понять, где искать.