微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何以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 举报,一经查实,本站将立刻删除。