Фактическое определение типа

215
23 мая 2017, 01:25

Может мне кто-то пояснить, каким образом в Java осуществляется фактическое определение типа объекта, какой алгоритм действий?

Answer 1

Если говорить, о OpenJDK/HotSpot, то у каждого объекта в куче (heap) есть заголовок с двумя полями: mark и klass.

mark содержит хэшкод, возраст объекта и локи.

klass представляет собой указатель на структуру:

  • в JDK 7: klassOop, лежащую в PermGen,
  • в JDK 8+: Klass, лежащую в Metaspace.

По сути это внутренний аналог java.lang.Class, лежащий в нативной памяти.

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

READ ALSO
Форматирование текста для JTextField

Форматирование текста для JTextField

У меня есть консоль, JTextField, в которую выводится String out, когда мне нужно дописать текст, я добавляю в эту переменную \n и необходимый текст, затем...

305
Из инфиксной формы в постфиксную и префиксную

Из инфиксной формы в постфиксную и префиксную

Помогите пожалуйста формулами для преобразования алгебраических выражений из инфиксных форм в постфиксные и префиксные с предусмотрением...

371
Ошибки при билде apk(android.graphics.drawable.RippleDrawable)

Ошибки при билде apk(android.graphics.drawable.RippleDrawable)

Чистая студия, приложение стартует всё нормально работаетНо каждый раз в любом проекте всегда одна и та же ошибка

446