【问题标题】:Monitor heap usage of JVM in real time实时监控JVM的堆使用情况
【发布时间】:2016-12-06 17:48:04
【问题描述】:

我很难理解如何监控 JVM 堆使用情况应该起作用。我已经阅读了多个线程,它们都使用相同的模式,取自以下来源:https://docs.oracle.com/javase/7/docs/api/java/lang/management/MemoryPoolMXBean.html

但是,侦听器永远不会触发事件。我只想能够在我的 GUI 内实时显示 JVM 的当前堆大小。我该怎么做?

【问题讨论】:

  • 来自正在运行的 JVM 进程内,还是来自外部程序?你的代码在哪里?

标签: java memory monitoring heap-memory


【解决方案1】:

Jvisualvm工具就是你需要的,它在你jdk的bin仓库里,搜索jvisualvm.exe并启动它,你可以实时检查你的堆内存和permgen内存。

【讨论】:

  • 好吧,我想在我的 GUI 中的 JTextArea 中显示它:/
  • @Zorobay 那么你正在寻找Runtime.getRuntime().freeMemory()Runtime.getRuntime().totalMemory()
  • 如果你想在 GUI 中显示它,我认为这篇文章可以提供帮助:stackoverflow.com/questions/17364820/… 这样你就可以从你的 GUI 调用 jvisualvm
【解决方案2】:

此用例不需要 JMX。

 Runtime.getRuntime().totalMemory(); 

... 和 Runtime 中的类似方法,为您提供瞬时内存信息。设置调度程序来执行此操作并更新您的 GUI。

当然,如果你想从外部监控这种事情,JMX 是很有价值的。

【讨论】:

  • 我可以用这个,谢谢。尽管如此,它并没有像监听变化那样优化......:(
  • 如果你想从中生成图表。在循环中轮询这个,你将获得生成图表所需的信息
猜你喜欢
  • 2013-05-17
  • 2012-03-15
  • 2016-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-10
  • 2018-05-04
  • 1970-01-01
相关资源
最近更新 更多