我需要一些解决方案来帮助我了解一些方法,在这种情况下:void myMethod(...){ MyObject obj = new MyObject(); // do stuff}如果此方法已结束或 obj 无法访问(这将表明该方法已结束)。我正在编写一个小型 Java 代理,我希望有一些技术可以让我确定此方法结束或 obj 无法访问......在我的情况下,“做东西”部分根本不使用 obj . 它不会将此变量传递到其他地方或将其添加到某个集合中。我知道使用 Weak/Soft/Phantom-References 我可以部分实现这一点。如果调用 GC,则通过:void myMethod(...){ MyObject obj = new MyObject(); WeakReference objReference = new WeakReference(obj); // do stuff}我总是可以在不同的地方验证: if (objReference.get() == null) ...然而,这只有在 GC 发生时才可能正确。有没有其他方法可以实现这一目标?例如,一些标记 JVM 可能会放在这个变量上,因为很明显这是一个绝对可以垃圾回收的本地......我不想依赖 ASM - 并为所有这些方法添加一个 try-finally 包装器。希望有一个更微妙的、基于参考的解决方案。
添加回答
举报
0/150
提交
取消