Цитата:
|
только третий вариант приводит к адекватной чистке
|
Значит занято меньше, чем 25% памяти и pauseForGCIfCollectionImminent не срабатывает.
Срабатывает System.gc(). Но, повторю ещё раз, работает этот метод только в дебажных средах.
Не понимаю, к чему молиться на каждый мегабайт оперативки. GC сам почистит, когда посчитает нужным. Можно лишь
слегка взять его под контроль через pauseForGCIfCollectionImminent. Ваша задача, как программиста, сделать так, чтобы у gc получалось корректно чистить память, то есть удалять ненужные ссылки и связи. Попытки влиять не поведение виртуальной машины - бессмысленная идея.