Когда JVM необходимо увеличить размер кучи, она вызовет полную сборку мусора, что может снизить пропускную способность или вызвать паузу, поэтому я думаю, что это рекомендуется для повышения производительности.
Значение по умолчанию задокументировано как 2 МБ, поэтому, если вы не переопределите его, вы, вероятно, получите много (возможно, очень быстрых) полных коллекций после запуска, так как размер кучи часто изменяется.
Если вы не пытаетесь сохранить минимальный объем памяти, я бы следовал совету BEA.
Невозможно сказать по предоставленной информации, подходит ли 2 ГБ, или если объекты, занимающие в нем пространство, все еще находятся в области видимости - старое поколение будет постепенно заполняться, пока не будет исчерпано пространство, когда полная коллекция будет быть призван. Откуда эта цифра 80%?
Используйте следующие аргументы JVM для записи сведений GC в файл с именем gc.log:
-verbose:gc -XX:+PrintGCDetails -Xloggc:gc.log
Затем вы можете проанализировать это, используя что-то вроде http://www.tagtraum.com/gcviewer.html