如何以csv格式定期获取我的Java程序的定期堆转储无jprofiler

问题描述

我想定期将通用Java应用程序的堆转储作为csv文件。假设我有一个程序

public class Test {

  public static void main(String[] args) throws Exception {
    // Code to be profiled
  }
}

我想在运行程序后定期检查堆转储并生成如下的csv

Time  Committed size    Free size   Used size
0.0     251392000       235881000   15511000
1.0     456704000       264288000   192416000
2.0     1024000000      756641000   267359000
3.01    1035776000      217595000   818181000
4.01    1494528000      153111000   1341417000
5.02    1444352000      1235099000  209253000
6.02    1546240000      1185698000  360542000

这看起来像是提供给visualvm / jprofiler等的信息,以便他们生成内存转储图。

我可以很容易地使用带有jcontroller和jpexport的jprofiler(通过cmd行和jprofiler api)以编程方式实现它,但是我还无法弄清楚如何使用其他类似工具(例如visualvm,jmap等)来做到这一点。

我正在寻找的是一种程序化的方法来配置Java程序(此处为Test.java),而完全不涉及GUI。还有一个类似的问题here,但建议的解决方案是针对visualvm的Tracer插件,它将再次涉及使用GUI。我找到的最接近的解决方案是像给定示例here中那样使用JMX,但我无法使其工作。

有没有办法为我实现这一目标?附带说明一下,我在Mac上使用Java SE 8。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)