我想获得对 Java 堆中所有对象的引用,即使我没有立即在我的 Activity 线程中获得对这些对象的引用。我不需要未引用的对象(那些“排队”进行垃圾收集的对象),但想获得仍在使用的任何对象。
目标是序列化并存储所有对象,以实现穷人的执行状态持久化。我意识到,当涉及到不同类型的 transient 时,兔子洞会变得很深,但是简单地持久化对象和加载的类定义对我来说很有用。
有没有办法访问堆以实现这一点?我是否忽略了一种更直接的方法?
最佳答案
我会查看 instrument包裹。检测您感兴趣的类,以便构造函数注册创建的实例。如果您不想使用 java.lang.instrument,或者如果对象是通过您可以控制的东西(IoC 容器或工厂)创建的,那么您可以通过 AspectJ 来完成此操作,那么您可以做一些不那么神奇的事情。
关于java - 如何在没有引用的情况下访问 Java 堆对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1384228/