См. Следующее:
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.
Извините, каждый, я отвечаю на свой вопрос.
_prev = (ptr | 0x1); Это означает, что _prev является бесплатным для использования.
Если последний бит указателя адреса равен 1, это означает, что указатель адреса, на который указывает, является бесплатным.
Аналогично, последний бит равен 0, а не бесплатно.
Думаю, это всего лишь трюк реализации jdk.