说明:这篇文章来翻译来自于Javapapers 的Java Garbage Collection Monitoring and Analysi
在这个系列的Java垃圾回收教程中,我们将看到可用于垃圾回收监控和分析的工具。然后使用一个工具去监控用于举例的java程序的垃圾回收过程。如果你是一个新人,你最好通读这个系列的教程。你可以从Java垃圾回收的介绍开始。
下面是几个可用的工具。它们每一个都有自己的优势和劣势。通过选择合适的工具和使用有组织的方式来分析我们可以提升程序的表现力。在这个教程中我们将使用Java VisualVM
Java VisualVM可以通过JavaSE SDK的安装中免费获取。看一下你的JDK的安装的可执行二进制文件夹,路径是\Java\jdk1.8.0\bin
。和javac和java工具一起还有其他很多能够使用的工具。jvisualvm
只是他们其中的一个。
Java VisualVM 提供了一个可视化的接口用来展示关于正在运行的java程序的信息。它是一个将很多工具绑定成的工具。像JConsole、jstat、jinfo、jstack、jmap这些工具现在都是Java VisualVM的一部分了。
Java VisualVM能够用于
jvisual
能够在JDK的安装目录中找到。
为了有一个更棒的视觉感受关于Java GC 过程,我们需要安装一个Visual GC 插件
现在我们可以监控垃圾回收过程了。开启你的Java程序,然后它可以自动被发现并且被展示在Java VisualVM界面中。在Local
节点的下面的左边的Application
面板中,所有的本地运行的java程序都会被列举出来。
Java VisualVM是一个java程序而且它也会被显示在里面。为了教程的目的,我们将监控VisualVM 程序本身。
双击Local
节点的下面的VisualVM图标。
现在程序的监控面板已经在右边被打开了。那边有不同的标签页去显示和程序相关的不同的监控部分。我们现在的注意力点在Visual GC
,点击它吧,
在上面的图片中,展示了内存区中Old、S0、S1的利用率。在下面的图中,显示了每段智能的分配和回收内存。它以定义好的频率来刷新。
上面的图表示的是一个程序正常的情况。如果存在内存泄露或者其他不正常的情况,它将明显的进行回收操作。我们至少可以知道有一个问题和对象内存的分配和来及回收有关。在其他的标签页像Threads
和Thead DUmp的帮助下,我们可以减少这种问题。
在Monitor
标签页中,我们能够通过一个时间序列图来监控堆内存的利用率。我们能够通过Perform GC
按钮来初始化垃圾回收进程。
在Sampler
标签页中,我们能够开启内存和CPU分析进程,它将详细的展示每个实例的利用率。它可以帮助去明确表现出来的问题。
伴随着这部分教程,我们系列教程已经来到了尾声。