2016-12-06 66 views
1

我很难理解如何监控JVM堆的使用情况。我读过多个线程,他们都使用相同的模式,从这个来源采取:https://docs.oracle.com/javase/7/docs/api/java/lang/management/MemoryPoolMXBean.html实时监控JVM的堆使用情况

但是,侦听器从来没有接缝触发事件。我只希望能够在GUI中实时显示JVM的当前堆大小。我怎样才能做到这一点?

+1

从正在运行的JVM进程还是从外部程序运行?你的代码在哪里? – Qix

回答

1

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

+1

嗯,我想在我的GUI中显示它在JTextArea中:/ – Zorobay

+2

@Zorobay然后你正在寻找'Runtime.getRuntime()。freeMemory()'和'Runtime.getRuntime()。totalMemory()' – Jire

+0

如果你想在GUI中显示它,我认为这篇文章可以提供帮助:http://stackoverflow.com/questions/17364820/running-a-exe-file-inside-java-code这种方式你可以从GUI调用jvisualvm –

1

对于此用例,您不需要JMX。

Runtime.getRuntime().totalMemory(); 

...和Runtime中的类似方法,给你即时的记忆信息。设置一个调度程序来执行此操作并更新您的GUI。

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

+0

我可能会用这个,谢谢。尽管如此,它并没有像只是在听一个变化一样优化...... :( – Zorobay

+0

,如果你想生成一个图表。在一个循环中轮询这个,你将有必要的信息来生成图表 – Acewin