この質問はHotSpot 世代に限定されています。特定のインスタンスがどの世代に住んでいるかをプログラムで調べる方法はありますか? 次のようなデータ:
- 若い世代か古い世代か?
- 若い場合、どのサバイバー スペースですか?
- TLABの中?どのスレッド?
次のようなことができる限り、任意の手法 (例: BTrace、JVMTI ) が機能します。
Object x = new Object();
HotSpotGenerationInfo info = HotSpotGenerationUtil.getInfo(x);
物乞いは選択者になることはできませんが、理想的には、関心のあるインスタンスが発生した瞬間にある世代から別の世代に移動された時期を知ることもできます(つまり、イベント コールバックに基づいており、ポーリングに内在する遅延とオーバーヘッドには関心がありません)。
理由もなく「いいえ」と言う答えには興味がありません:)