是否可以从内存中获取所有对象?

是否可以从内存中获取所有对象?

问题描述:

如何获取内存中的所有对象?是否可以从内存中获取所有对象?

public static void main(String[] arg){ 
    MyClass object1 = new MyClass(); 
    BigDecimal bd = new BigDecimal(); 
    Object obj = new Object(); 
    List allObjects = getAllObjects(); // return object1, bd, obj   
    ; 
    ; 
    ; 

} 
+0

这是一个不寻常的问题,什么问题是你想解决? – Gennadiy 2010-01-11 12:39:31

+0

@Gennadiy:我想获得内存中的所有对象,然后将它们全部保存为yaml。 – 2010-01-11 12:55:13

+0

我认为你可以在课堂内收集它们,并在需要时对其进行序列化? – 2010-01-11 12:58:07

可能最简单的是通过VisualVM获得堆转储。 JDK还包含相关工具,如jmap tool

恐怕没有简单的答案在运行时要做到这一点,无论你用仪表 How can I access Java heap objects without a reference? 或写代理 http://java.sun.com/j2se/1.5.0/docs/guide/jvmti/jvmti.html