Обнуление локальных переменных может действительно помочь в некоторых пограничных случаях. Это не относится к ситуации в исходном вопросе, но является образовательным так или иначе... Давайте рассмотрим эту программу:
public class Main {
public static void main(String[] args) {
{
Main local = new Main();
// inner = null;
}
while (true) {
// long running method
}
}
}
, Если inner = null;
комментируется, объект в local
, переменная не может быть собрана "мусор" во время цикла с условием продолжения. Причина состоит в том, что виртуальная машина Java не знает об объемах как это. Все, что это имеет:
D:\workspaces\workspace-3.4\test\src>javap -verbose -c Main
public class Main extends java.lang.Object
minor version: 0
major version: 50
Constant pool:
const #1 = Method #4.#11; // java/lang/Object."":()V
const #2 = class #12; // Main
const #3 = Method #2.#11; // Main."":()V
const #4 = class #13; // java/lang/Object
const #5 = Asciz ;
const #6 = Asciz ()V;
const #7 = Asciz Code;
const #8 = Asciz main;
const #9 = Asciz ([Ljava/lang/String;)V;
const #10 = Asciz StackMapTable;
const #11 = NameAndType #5:#6;// "":()V
const #12 = Asciz Main;
const #13 = Asciz java/lang/Object;
{
public Main();
Code:
Stack=1, Locals=1, Args_size=1
0: aload_0
1: invokespecial #1; //Method java/lang/Object."":()V
4: return
public static void main(java.lang.String[]);
Code:
Stack=2, Locals=2, Args_size=1
0: new #2; //class Main
3: dup
4: invokespecial #3; //Method "":()V
7: astore_1
8: goto 8
StackMapTable: number_of_entries = 1
frame_type = 8 /* same */
}
нет никакой информации об объеме локальной переменной. Таким образом с точки зрения JVM, выше программы эквивалентно:
public class Main
{
public Main() { }
public static void main(String args[])
{
Main main1 = new Main();
do
;
while(true);
}
}
(Сгенерированный декомпилятором JAD)
Заключение: СУЩЕСТВУЕТ некоторое объяснение в обнулении локальных переменных в совершенно особых случаях как это. Но если метод собирается закончиться скоро (как в моем исходном вопросе), он не помогает.
Это было вдохновлено комментарием от Zdenek Tronicek в списке рассылки java-cz (на чешском языке, извините)
Фасетный поиск является технически ведомой навигацией, которая позволяет пользователям сужать свои результаты поиска. Это может использоваться в больших каталогах (как библиотека изображений, например), но наиболее популярный способ использования этой функции поиска для веб-магазинов электронной коммерции / веб-магазины. Вот новое и всесторонняя статья о том, что является фасетным поиском и как это работает - я надеюсь, что это помогает.