У нас есть корпоративное приложение, развернутое в wildfly 8.2, с минимальным и максимальным размером кучи, равным 1,5 ГБ. Одно из действий — загрузка слишком большого количества объектов в кучу. Несмотря на то, что после действия объект разыменовывается, использование кучи jvm не снижается.
Но если я вручную запускаю сборщик мусора извне (с помощью jcmd), я наблюдаю огромный спад в использовании кучи. Почему обычный сборщик мусора не уменьшает память так сильно, как GC.run?
Настройки JVM
-Xms1536m -Xmx1536m -XX:MaxMetaspaceSize=512m -XX:ReservedCodeCacheSize=128M -server -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp -verbose:gc -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Djsse.enableSNIExtension=false -Dsun.rmi.dgc.client.gcInterval=600000 -Dsun.rmi.dgc.server.gcInterval=600000
Подробнее здесь: https://stackoverflow.com/questions/398 ... -up-memory