java PrintCompilation произвел: каково значение “сделанного не участник” и “сделанный зомби”

При выполнении Java 1.6 (1.6.0_03-b05) приложение я добавил -XX:+PrintCompilation флаг. На выводе для некоторых методов в особенности некоторые из тех, которых я знаю, становятся названными много, я вижу текст made not entrant и made zombie.

Что они означают? Лучшее предположение - то, что это - шаг декомпиляции прежде, чем перекомпилировать или тот метод или зависимость с большей оптимизацией. Это верно? Почему "зомби" и "участник"?

Пример, с довольно мало времени между некоторыми из этих строк:

[... near the beginning]
42       jsr166y.LinkedTransferQueue::xfer (294 bytes)

[... much later]
42    made not entrant  jsr166y.LinkedTransferQueue::xfer (294 bytes)
---   n   sun.misc.Unsafe::compareAndSwapObject
170       jsr166y.LinkedTransferQueue::xfer (294 bytes)
170   made not entrant  jsr166y.LinkedTransferQueue::xfer (294 bytes)
  4%      jsr166y.LinkedTransferQueue::xfer @ 29 (294 bytes)
171       jsr166y.LinkedTransferQueue::xfer (294 bytes)

[... even later]
42    made zombie  jsr166y.LinkedTransferQueue::xfer (294 bytes)
170   made zombie  jsr166y.LinkedTransferQueue::xfer (294 bytes)
171   made not entrant  jsr166y.LinkedTransferQueue::xfer (294 bytes)
172       jsr166y.LinkedTransferQueue::xfer (294 bytes)

[... no further logs]
40
задан rolve 26 February 2016 в 10:14
поделиться

1 ответ

Это абсолютно не моя область знаний, но мне было интересно, и я немного покопался.

Пара ссылок, которые могут показаться вам интересными: OpenJDK:nmethod.cpp, OpenJDK:nmethod.hpp.

Выдержка из nmethod.hpp:

// Make the nmethod non entrant. The nmethod will continue to be
// alive.  It is used when an uncommon trap happens.  Returns true
// if this thread changed the state of the nmethod or false if
// another thread performed the transition.
bool  make_not_entrant() { return make_not_entrant_or_zombie(not_entrant); }
//...

Просто как отправная точка.

9
ответ дан 27 November 2019 в 01:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: