Как распределяется память для функций-членов класса в Java - PullRequest
2 голосов
/ 13 августа 2011

Я нашел вопрос, похожий на мой:

"Распределяется ли память кода функции-члена класса один раз или при каждом создании объекта?"1006 * Но ответ там говорил только о случае для C / C ++.Может ли кто-нибудь сказать мне ответ на этот вопрос, если я использую Java?

Ответы [ 3 ]

1 голос
/ 13 августа 2011

Распределяется ли память кода функции-члена класса один раз или каждый создание объектов

Распределяется один раз для каждого класса, а не один раз для каждого объекта. Чтобы быть точным, он выделяется один раз для пары class / classloader. Вы можете думать о том, что он выделен компилятором, если вы понимаете, что компилятор включает все, что делает JIT или HotSpot.

0 голосов
/ 13 августа 2011

Ответ в основном такой же, как в вашем другом вопросе, просто он более динамичен.Для самой популярной виртуальной машины Sun / Oracle: исполняемый код компилируется в кэш кода по требованию компилятором JIT (Just-In-Time) и дополнительно оптимизируется (например, встроенным) на лету компилятором Hotspot.

Когда метод называется указателем метода, ссылки на переменные метода и значения помещаются в стек как контекст, а затем выполняется код в кеше кода.

0 голосов
/ 13 августа 2011

Это не простой ответ.

Код загружается один раз, когда класс загружается, но код может быть встроен в методы других классов (и таким образом загружаться каждый раз, когда загружаются эти другие классы), а классы могут собираться мусором и позже перезагружаться, код загружается снова.

Многие аспекты распределения будут также зависеть от реализации виртуальной машины.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...