О какой версии Java мы здесь говорим? В 6 я бы никогда не назвал это явно. Как правило, сборщик мусора достаточно хорош, чтобы знать, когда лучше всего очистить ресурсы, и у него достаточно настраиваемых параметров виртуальной машины. Я, конечно, никогда не чувствовал необходимости называть это в коде, и я бы сказал, что если вы не делаете что-то действительно странное (или демонстрирующее использование ресурсов), то лучше этого не делать. Если вам нужно позвонить, я бы сказал, что вы сделали что-то плохое или неправильное в другом месте.
Если мы говорим о работе с Java 1.4 или ранее, иногда я нахожу, что она нуждается в помощи. Нет примеров, которые можно было бы передать (извините), но я помню, что мне нужно было дать подсказку, чтобы избежать ужасной задержки, когда он решил в конечном итоге запустить. С тем же кодом на 6 проблема исчезла, и ее вызов почти не изменился.
Конечно, когда вы звоните System.gc()
, все, что вы на самом деле делаете, - это подсказывает виртуальной машине, что сейчас самое время запустить сборщик мусора. Это не значит, что на самом деле так и будет, это всего лишь предположение, что совершенно правильная реализация виртуальной машины может полностью игнорироваться. На самом деле есть даже опция DisableExplicitGC, которая означает, что эти вызовы определенно не будут вступать в силу (и большая часть кода в производственных средах запускается с этой опцией.)
Так что да, он все еще используется в коде - но в подавляющем большинстве случаев это вообще не очень хорошая практика.