Облегчает ли локальные переменные, заключенные внутри методов, сборку мусора? - PullRequest
0 голосов
/ 22 апреля 2019

Я пытаюсь оптимизировать свой код с точки зрения памяти для проекта Android, над которым я работаю.

Я ищу способ минимизировать накопленный мусор, мой главный вопрос - стоит лиВнедрение (через кинжал) переменных в класс, если они должны использоваться только внутри определенного метода (либо инициализации, либо для другой цели), или я должен объявлять их только в соответствующем методе, увеличит сборку мусора после выполнения этого метода?

Fi, есть ли случай, когда нам нужен следующий случай:

@Inject
Foo foo;

@Overrides
public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        DaggerAppComponent.create().inject(this);
}


public void bar() {
       foo.bar();
}

вместо приведенного ниже (учитывая, что объект будет использоваться только в методе bar)?

@Overrides
public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
}


public void bar() {
       Foo foo = new Foo();
       foo.bar();
}

Не является ли второй случай более эффективным с точки зрения памяти, что делает объект готовым для сборщика мусора?

Наконец, есть ли случай, когда рекомендуется использовать System.gc ()?

Спасибо!

...