我想知道是否可以将visualVM显示的结果(内存使用情况,GC活动,堆...)存储在数据库中,以便我们以后可以查阅它们?
如果有人有想法,或者更好地替代visualVm,我会感激不尽。
很多人。
答案 0 :(得分:1)
所有这些指标都可以使用JMX获得。您可以编写一个监视Java程序,该程序连接到外部(目标)JVM'MBeanServer
,并将选定的JMX指标转储到数据库中。
您还可以使用神奇的Jolokia库来使用几乎任何支持HTTP的语言来获取这些指标。 Jolokia本身也可以存储所选指标的历史值。
话虽这么说,你不能简单地将有趣的值转储到应用程序日志(或者可能是某些选定的文件)并离线处理它们吗?日志文件更易于维护(日志记录框架可以为您删除旧文件)和访问(存储在数据库中而不是记录到文件中)。
答案 1 :(得分:1)
我不确定“稍后咨询”是什么意思,但如果这意味着您想要通过VisualVM对收集的数据进行离线分析,则可以从受监控的应用程序创建“应用程序快照”。此应用程序快照封装了数据和图形,以及在应用程序监视期间获取的线程转储,堆转储和CPU /内存快照。