Могу ли я программно узнать, в каком поколении сборщика мусора живет экземпляр?

Этот вопрос ограничен поколениями HotSpot . Есть ли способ программно узнать, в каком поколении живет тот или иной экземпляр. Такие данные, как:

  • Молодое или старое поколение?
  • Если молодое, какое место выжившего?
  • Внутри TLAB? Какой поток?

Любой метод (например, BTrace , JVMTI ) работает, пока я могу делать что-то вроде этого:

Object x = new Object();
HotSpotGenerationInfo info = HotSpotGenerationUtil.getInfo(x);

Нищие не могут выбирать, но в идеале Я также мог узнать, когда интересующий экземпляр перемещался из одного поколения в другое , в тот момент, когда это происходит (т. Е. На основе обратного вызова события - не интересуется задержкой и накладными расходами, неявными при опросе.)

Не интересуют ответы, в которых просто безосновательно сказано «нет»: )

8
задан Brian Harris 16 December 2010 в 00:36
поделиться