ガベージコレクターに苦労しています。特定のオブジェクトから強くまたは弱く到達可能なすべてのオブジェクトをリストしたいと考えています。再帰的に行う必要があることはわかっていますが、それを実現する簡単な方法が見つかりません。手伝っていただけませんか?
public static List<Object> getAllReachableObjects (Object from)
ガベージコレクターに苦労しています。特定のオブジェクトから強くまたは弱く到達可能なすべてのオブジェクトをリストしたいと考えています。再帰的に行う必要があることはわかっていますが、それを実現する簡単な方法が見つかりません。手伝っていただけませんか?
public static List<Object> getAllReachableObjects (Object from)
残念ながら、それは実際には機能しません。OK、私はそのようなメソッドが欲しいだけです:
public static List < Object > getStronglyReachable (Object from)
// contains all objects that are ONLY strongly reachable
public static List < Object > getSoftlyReachable (Object from)
// contains all objects that are strongly OR softly reachable
public static List < Object > getWeaklyReachable (Object from)
// contains all objects that are strongly OR softly OR weakly reachable
オブジェクトは配列にすることができることに注意してください。コードには次のようなものが必要です。
// if an object is an array, iterate over its elements
if (from.getClass ().isArray ())
for (int i = 0; i < Array.getLength (from); i++)
collectAllReachableObjects (Array.get (from, i), result);