【问题标题】:Are there any tools to visualize the objects being used in a program?是否有任何工具可以可视化程序中使用的对象?
【发布时间】:2010-12-21 21:48:59
【问题描述】:

我不确定这会有多大用处,但我认为可视化我的程序中使用的对象以及从何处引用哪些对象可能会很简洁。我猜它会生成一些数据,供graphviz之类的程序使用。是否有任何工具可以做到这一点,否则自己做这件事有多难?理想情况下,这适用于任意程序,但如有必要,我可以对代码进行一些修改(例如添加 dumpObjects() 调用或其他)

我有兴趣为 java 做这个,但如果有其他语言的解决方案,也请发布。

【问题讨论】:

  • 是的,我一直希望在 C# 中有这样的东西;试图处理它,但它需要一个分析器。在Java中可以通过AOP生成相关信息; C# 对此没有很好的支持。
  • 这个问题已经很老了,但仍然相关。这样的工具会很好地找出为什么某些对象没有被垃圾收集并解决内存泄漏。 Profilers 没问题,但问题是停在 1 级,整个图表可以帮助您发现不止一个级别存在的问题。显示对象上的过滤器有助于保持其清洁和可读性。

标签: java visualization


【解决方案1】:

不确定这是否是您的目标,但doxygen 几乎可以完成所有这些工作。

它将需要大量编译代码并将其转换为交叉引用的 html、pdf 的 rtf。 完成将为每个函数调用树并为每个变量“引用”

【讨论】:

  • 对不起,我的意思是在运行时使用的对象。
【解决方案2】:

分析器可以让您查看在运行时创建了哪些对象。例如,这是 JProfiler 的输出:


(来源:ej-technologies.com

【讨论】:

  • JProbe 是另一个具有类似内存分析功能的分析器。大约 10 年前,我用它来修复一些错误地认为 Java 不可能存在内存泄漏的人编写的 Java 代码。要找到您在特定点拍摄“快照”的 leas,请在您的程序中执行您认为可能有泄漏的一组操作,然后将程序返回到其原始状态。快照之前创建的对象所指向的快照之后创建的任何对象都是潜在的泄漏对象。
【解决方案3】:

一个有趣的用例是内存分析和优化。这正是Eclipse MAT 的意义所在。看看吧。

alt text http://dev.eclipse.org/blogs/memoryanalyzer/files/2008/05/dom_tree.gif

【讨论】:

    【解决方案4】:

    Sun 开发了VisualVM,其中包括内存和进程分析。它还支持 OSGi 等技术的插件。

    【讨论】:

      【解决方案5】:

      对于可视化图结构(包括对象图),有很多基于 GraphViz 的工具:http://www.graphviz.org/

      【讨论】:

        【解决方案6】:

        Object Graph Visualizer 以 3D 形式显示类和对象。目前它缺少一个自动化初始化的 API,但是添加这个功能应该不会太难。 源代码也在Github

        编辑:显然已经朝着这个方向进行了工作: https://eprints.hsr.ch/491/

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-09-09
          • 2013-06-18
          • 1970-01-01
          • 1970-01-01
          • 2012-07-17
          • 2019-12-20
          • 1970-01-01
          • 2011-07-31
          相关资源
          最近更新 更多