Если куча заполнена, JVM выбрасывает
OutOfMemoryError
. Но уверен ли, что (полная) сборка мусора всегда имеет место до того, как будет выброшено такое исключение?
Это означало бы, что память заполняется только сильными объектами, на которые ссылаются (или достижимыми GC Roots), когда генерируется исключение.
Изменить: предположим, что Sun JVM - HotSpot обсуждается.