Какова функция jdk UseCompressedOops?

0

См. Следующее:

void link_prev(FreeChunk* ptr) {
  LP64_ONLY(if (UseCompressedOops) _prev = ptr; else)
  _prev = (FreeChunk*)((intptr_t)ptr | 0x1);
}

Если не LP64, зачем "_prev = ptr | 0x1 'вместо' _prev = ptr 'напрямую?

Этот код находится из jdk8/openjdk/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/freeChunk.hpp строка 118.

Теги:
jvm

1 ответ

0

Извините, каждый, я отвечаю на свой вопрос.

_prev = (ptr | 0x1); Это означает, что _prev является бесплатным для использования.

Если последний бит указателя адреса равен 1, это означает, что указатель адреса, на который указывает, является бесплатным.

Аналогично, последний бит равен 0, а не бесплатно.

Думаю, это всего лишь трюк реализации jdk.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню