Где хранится компьютер JVM во время разговора? - PullRequest
0 голосов
/ 16 ноября 2018

Я сейчас читаю последнюю спецификацию JVM. Понятно, что каждый поток имеет свой собственный стек вызовов и собственный программный счетчик, который отслеживает выполнение (следующей) инструкции. Мой вопрос, возможно, дамп, но из описания я не могу найти ответ.

Где хранится текущий программный счетчик при вызове new или метода? Другими словами, как теперь поток, где продолжить после вызова метода?

1 Ответ

0 голосов
/ 16 ноября 2018

Ответ зависит от реализации, поскольку разные аппаратные архитектуры и даже разные JVM могут реализовывать это поведение по-разному.В стандартной Oracle JVM большая часть вашего байт-кода будет компилироваться в собственный код с помощью JIT (компилятор Just in Time), а вызовы методов будут выполняться так же, как и для собственного кода (давать или принимать некоторый дополнительный код, который может быть добавлен для обработки контрольных точек и т. Д.).).На ПК это означает, что текущие значения регистров, включая указатель команд / программный счетчик, будут сохранены в стеке перед вызовом метода.При возврате из вызова процессор извлекает эти значения из стека, в том числе адрес возврата.

...