Я работаю над статьей Oracle Inside HotSpot и GC, но я смущен о значении ООП (обычный указатель на объект).Является обычным указателем объекта указателем или структурой объекта в HotSpot?
Oracle documentation утверждает, что ООП является 32 или 64 битный указатель на объект структура данных в куче:
«ООП», или обычный указатель на объект в Java Hotspot языке, представляет собой управляемый указатель объект. Обычно oop обычно имеет тот же размер, что и нативный машинный указатель
Он может быть сжат, но это, к тому же, проблема.
Я хотел найти статьи об этой структуре данных, но затем началось замешательство.
Некоторые статьи говорят, что ООП фактически является самой структурой данных, а не указателем!
Некоторые другие статьи кажутся противоречивыми по этому вопросу, например on infoq.com. Сначала указывается, что ООП является указателем:
ООП - это подлинный указатель в смысле C/C++ - машинное слово, указывающее на ячейку памяти внутри кучи Java.
, но после того, что он говорит:
полокоть состоит из двух машинных слов заголовка, которые называются Метка и слова Klass следует поля членов этого экземпляра.
Значит, указатель состоит из полей заголовка и члена? Это не может быть правдой.
Наконец, я попытался посмотреть исходный код источника JDK Oracle и OpenJDK HotSpot (поскольку Oracle HotSpot не является открытым исходным кодом). Но на основании этого казалось, что ООП действительно является объектной структурой данных. Но в этом случае, что такое указатель?
Вопрос в таком виде: Что такое ООП в JVM HotSpot?