Как проверить область, где методы хранятся в виртуальной машине Java - PullRequest
2 голосов
/ 18 декабря 2011

Вопросы

  1. Где хранится метод для моего объекта?
  2. и могу ли я увидеть эту область, если я дам свое приложение Java?

Фон

Я пытаюсь измерить размер моего объекта и понять, что методы не хранятся в том же месте, что и данные объекта.

Я пытаюсь «увидеть», где код для методов хранится в работающем приложении Java.

Я попытался выгрузить кучу с помощью jmap и проверить дамп с помощью jhat, но не могу найти ничего полезного относительно того, где находятся методы для моих классов.

1 Ответ

5 голосов
/ 18 декабря 2011

Где хранится метод для моего объекта

Они хранятся в объекте Class, который хранится в PemGen пространстве.

и могу ли я увидеть эту область, если я дам свое приложение Java?

Это не тривиально. JVM выполняет несколько оптимизаций, таких как JIT-компиляция, что усложняет эту задачу.

Я пытаюсь «увидеть», где код для методов хранится в работающем приложении Java.

Вы знаете, что существует только одна копия каждого метода для класса , а не для экземпляра ? Это означает, что после загрузки класса ClassLoader все методы этого класса сохраняются в памяти. Неважно, сколько экземпляров вы создаете. При этом вам, вероятно, все равно, сколько памяти занимают методы.

Смотри также:

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