Загружается ли метод экземпляра в память для каждого объекта или класса? - PullRequest
7 голосов
/ 17 февраля 2011

Если у меня есть объект O с гигантским методом f() и я загружаю 10000 примеров O в память.10000 примеров f() также загружены в память?Если так, значит ли это, что я бы сэкономил память, сделав эту функцию статической, если это возможно?

Ответы [ 4 ]

9 голосов
/ 17 февраля 2011

Методы экземпляра загружаются в область методов в JVM. он загружается один раз, но будет много стеков для каждого вызова функции f (), чтобы отслеживать значения собственных локальных переменных

6 голосов
/ 17 февраля 2011

Нет.Загружен только один экземпляр метода.

2 голосов
/ 17 февраля 2011

Нет. Методы не являются частью экземпляров; они часть классов. Не было бы смысла повторять код для каждого экземпляра (потому что он никогда не будет меняться), поэтому реализация, проще говоря, умнее этого.

2 голосов
/ 17 февраля 2011

Метод экземпляра является просто шаблоном и определяется в классе (не в каждом экземпляре).Вы не сэкономите память, сделав ее статичной.

...