【问题标题】:Is it possble to get all objects from memory?是否可以从内存中获取所有对象?
【发布时间】:2011-01-03 18:00:49
【问题描述】:

如何获取内存中存在的所有对象?

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        
    ;
    ;
    ;  

}

【问题讨论】:

  • 这是一个不寻常的问题,你想解决什么问题?
  • @Gennadiy:我想获取内存中的所有对象,然后将它们全部保存为 yaml。
  • 我认为你可以在一个类中收集它们并在需要时对其进行序列化?
  • @Rakesh:如果您只想保存您的对象,您可以检测它们并在构造时捕获它们的引用,然后检查引用并保存它们。但是保存整个 JDK 状态是不明智的。
  • @Alex:我认为你走在正确的道路上。但是该怎么做呢?

标签: java


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我担心在运行时没有简单的答案可以做到这一点,要么你使用 Instrumentation How can I access Java heap objects without a reference? 或写代理 http://java.sun.com/j2se/1.5.0/docs/guide/jvmti/jvmti.html

    【讨论】:

      猜你喜欢
      • 2014-09-21
      • 2012-10-09
      • 1970-01-01
      • 2014-04-07
      • 2013-04-02
      • 1970-01-01
      • 2022-11-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多