Вы не имеете никакого контроля над GC в Java - VM решает. Я никогда не натыкался на случай, где System.gc()
, нуждался . Начиная с System.gc()
вызов просто ПРЕДЛАГАЕТ, чтобы VM сделали сборку "мусора", и он также делает ПОЛНУЮ сборку "мусора" (старые и новые поколения в относящейся к разным поколениям "куче"), тогда он может на самом деле заставить [еще 115] циклы CPU быть использованным, чем необходимый.
В некоторых случаях, может иметь смысл предлагать VM, чтобы это сделало полный набор ТЕПЕРЬ, поскольку можно знать, что приложение будет простаивать в течение следующих нескольких минут, прежде чем тяжелый подъем произойдет. Например, прямо после инициализации большого временного объекта во время запуска приложения (т.е. я просто кэшировал ТОННУ информации, и я знаю, что не буду получать много действия в течение приблизительно одной минуты). Думайте о IDE, таком как затмение запуск - это делает много для инициализации, поэтому возможно, сразу после инициализации, имеет смысл делать полный gc в той точке.
Для методов и функций вы можете просто заменить тело функции предупреждением и вызовом на предпочтительную функцию.
perl perllexwarn дает следующий пример:
package MyMod::Abc;
sub open {
warnings::warnif("deprecated",
"open is deprecated, use new instead");
new(@_);
}
sub new {
# ...
}
1;
Если вы осуждаете весь модуль, поместите предупреждение в блок BEGIN
в модуле.
Вы также можно поместить предупреждения в метод import
(например, Win32 :: GUI :: import ): Все зависит от того, что именно вы хотите сделать.