Следует ОЧЕНЬ много сказать о том, чтобы потратить время на проверку различных настроек сборки мусора, но, как было упомянуто выше, обычно это бесполезно.
В настоящее время я работаю над проектом, включающим среду с ограниченной памятью и относительно большие объемы данных - есть несколько больших фрагментов данных, которые доводят мою среду до предела, и хотя я смог снизить использование памяти, поэтому что теоретически он должен работать нормально, я все равно буду получать ошибки пространства кучи - подробные параметры GC показали мне, что он пытался собрать мусор, но безрезультатно. В отладчике я мог бы выполнить System.gc () и, конечно же, было бы «много» доступной памяти ... не много лишней, но достаточно.
Следовательно, единственное время, когда мое приложение вызывает System.gc (), - это когда оно собирается войти в сегмент кода, где будут выделены большие буферы, необходимые для обработки данных, и проверка доступной свободной памяти показывает, что я не гарантированно иметь это. В частности, я смотрю на среду размером 1 ГБ, где не менее 300 МБ занято статическими данными, при этом основная часть нестатических данных связана с выполнением, за исключением случаев, когда обрабатываемые данные составляют не менее 100-200 МБ при источник. Все это часть процесса автоматического преобразования данных, поэтому все данные существуют в течение относительно коротких периодов времени в долгосрочной перспективе.
К сожалению, хотя информация о различных параметрах настройки сборщика мусора доступна, это в основном экспериментальный процесс, и детали более низкого уровня, необходимые для понимания того, как обрабатывать эти конкретные ситуации, получить нелегко.
При этом, несмотря на то, что я использую System.gc (), я продолжал настраивать параметры командной строки и смог значительно улучшить общее время обработки моего приложения, несмотря на то, что не смог преодолеть Камень преткновения возникает при работе с большими блоками данных. При этом System.gc () - это инструмент ... очень ненадежный инструмент, и если вы не будете осторожны с тем, как вы его используете, вы захотите, чтобы он не работал чаще, чем нет.