Методы ничем не отличаются от любой другой функции в отношении использования памяти: локальные переменные создаются, когда выполнение достигает своего объявления, и (если static
) они не уничтожаются, а их память восстанавливается, когда выполнение покидаетзаблокировать его .(Это происходит, самое позднее, когда функция возвращается.) Нет связи с объектом this
или любым его членом.Также переменная, имеющая тот же тип, что и класс метода, не имеет никакого значения.
В некотором смысле это делает память «разделяемой»: она будет быстро восстановлена и (как правило) повторно использована.Но в этом нет ничего особенного, и не думайте, что это означает больше, чем это: если метод рекурсивен или вызывается одновременно более чем одним потоком, у каждой копии есть свои собственные локальные объекты - опять же, как и у любой другой функции.
Наконец, любая функция или метод могут динамически распределять память;время жизни и совместное использование выделенного объекта могут быть не связаны с переменным , используемой для ссылки на него.