Мне интересно, какие именно ситуации вызывают сборку Full Garbage Collection в Java.
Очевидными являются:
- Запуск старого поколения
- Запуск из perm gen
- Calling System.gc()
Как насчет других случаев, вызывающих полный gc? В частности:
- Не хватает свободного места в Survivor Space для копирования объектов из Eden.
- Незначительные коллекции не могут справиться с темпом распределения новых объектов (не знаю, как это сделать).
Я запускаю Sun Java 1.6 и использую Concurrent Mark-Sweep и ParNew для нового поколения.