从tagtraum industries incorporated ~ GCViewer下载了gcviewer-1.29,其中README.txt是英文的,阅读不便。用工具翻译为中文,记录在此,方便阅读。
不过1.29是个比较老的版本了。
可以从这里下载最新的版本:gcviewer download | SourceForge.net
Readme Id:
GCViewer 1.2
GCViewer是一个小工具,可以可视化由Sun, IBM, HP和BEA Java虚拟机生成的详细GC输出。
您可以通过双击gcviewer-1.2x.jar或运行java -jar gcviewer-1.2x.jar来启动GCViewer。
支持的verbose:gc格式有:
- Sun JDK 1.4/1.5,使用选项-Xloggc:<file> [-XX:+PrintGCDetails]
- Sun JDK 1.2.2/1.3.1/1.4,使用选项-verbose:gc
- IBM JDK 1.3.1/1.3.0/1.2.2,使用选项-verbose:gc
- IBM iSeries Classic JVM 1.4.2,使用选项-verbose:gc
- HP-UX JDK 1.2/1.3/1.4.x,使用选项-Xverbosegc
- BEA JRockit 1.4.2/1.5,使用选项-verbose:memory
最佳结果是使用:-Xloggc:<file> -XX:+PrintGCDetails
关于垃圾收集相关的大多数JVM参数的详细描述,可以在这里找到:tagtraum industries incorporated ~ GCViewer VMFlags
GCViewer显示了许多线条等。它们是:
- Full GC Lines: o 每次Full GC时的黑色垂直线
- Inc GC Lines: o 每次Incremental GC时的青色垂直线
- GC Times Line: o 显示所有GC长度的绿色线条
- GC Times Rectangles: o 每次Full GC时的深灰色矩形 o 每次Incremental GC时的浅灰色矩形 o 每次’正常’GC时的灰色矩形
- Total Heap: o 显示堆大小的红色线条
- Tenured Generation: o 显示老年代大小的品红色区域(没有PrintGCDetails时不可用)
- Young Generation: o 显示年轻代大小的橙色区域(没有PrintGCDetails时不可用)
- Used Heap: o 显示已用堆大小的蓝色线条
指标(Metrics)
=======
GCViewer提供了一些指标来帮助您解读图表。 请注意,一些基于平均值的指标会显示它们的标准差。 如果很明显地,标准差相对于平均值很大,那么这些值会变灰,表示实际值可能比平均值小得多或大得多。
摘要(Summary)
-------
- Footprint: o 分配的最大内存量
- Freed Memory: o 被释放的总内存量
- Freed Mem/Min: o 每分钟释放的内存量
- Total Time: o 数据收集的时间(仅适用于Sun 1.5/1.4/1.2.2和 IBM 1.3.1/1.3.0/1.2.2)
- Acc Pauses: o 由于GC而造成的所有暂停的总和
- Throughput: o 应用程序没有忙于GC的时间百分比
- Full GC Performance: o 全部收集的性能。注意,所有包含老年代收集或 标记为"Full GC"的收集都被视为Full GC。
- GC Performance: o 小型收集的性能。这些是根据上述定义不是完整的收集。
内存(Memory)
------
- Footprint: o 分配的最大内存量(与摘要中的相同)
- Avg after full GC: o 全部收集后的平均堆内存消耗
- Avg after GC: o 小型收集后的平均堆内存消耗
- Freed Memory: o 被释放的总内存量
- Freed by full GC: o 由全部收集释放的内存量
- Freed by GC: o 由小型收集释放的内存量
- Avg freed full GC: o 由全部收集释放的平均内存量
- Avg freed GC: o 由小型收集释放的平均内存量
- Avg rel inc after FGC: o 全部收集之间内存消耗的平均相对增加。这是全部收集后的内存消耗与下一次全部收集后的内存消耗之间的平均差值。
- Avg rel inc after GC: o 小型收集之间内存消耗的平均相对增加。这是小型收集后的内存消耗与下一次小型收集后的内存消耗之间的平均差值。这可以用作内存在小型收集中存活并且必须移动到幸存者空间或老年代的量的指标。这个值加上"Avg freed GC"可以让您了解年轻代的大小,如果您没有打开PrintGCDetails的话。
- Slope full GC: o 全部收集后的内存消耗的回归线的斜率。这可以用作应用程序随时间增加不可或缺的内存消耗(基础占用)的指标。
- Slope GC: o 全部收集之间的小型收集后的内存消耗的回归线的平均斜率。也就是说,如果您有两次全部收集和许多中间的小型收集,GCViewer将计算第一次全部收集之前的小型收集的斜率,然后计算第一次和第二次全部收集之间的小型收集的斜率。然后它将计算一个加权平均值(每个斜率将根据它所用的测量点的数量进行加权)。
暂停(Pause)
-----
- Acc Pauses: o 由于任何类型的GC而造成的所有暂停的总和
- Acc full GC: o 由于全部收集而造成的所有暂停的总和
- Acc GC: o 由于小型收集而造成的所有暂停的总和
- Min Pause: o 最短的GC暂停
- Max Pause: o 最长的GC暂停
- Avg Pause: o 任何类型的GC暂停的平均长度
- Avg full GC: o 全部收集暂停的平均长度
- Avg Pause: o 小型收集暂停的平均长度
提示(Notes)
=====
这不是一个完美的工具。 但是,GCViewer 可以帮助您
掌握应用程序中发生的情况
关于垃圾收集。
以下是一些已知的限制。
IBM JDK
--------
如果您对 IBM 格式有疑问,请检查
每行信息实际上都在一行中并且没有换行。
IBM 格式实际上提供了比原来多得多的信息
可视化。
Sun JDK 1.3.1/1.4 与 -verbose:gc
----------------------------------
带 -verbose:gc 的 Sun JDK 1.3.1/1.4 不提供时间戳。
因此,诸如“总时间”、“吞吐量”和“释放内存/分钟”之类的值
无法计算。
Sun JDK 1.5(又名 Java 5)
----------------------------
-XX:+UseConcMarkSweepGC:并发收集的垃圾不是
正确反映在数据面板中。
BEA JRockit 1.4.2/1.5
--------------------
并发收集的垃圾可能无法正确反映在
数据面板。
导出格式
--------------
CVS 格式对于将数据导入到
电子表格应用程序。 但是,它并不导出所有
数据。
国际化
--------------------
提供了德语、英语和瑞典语 localStrings.properties
文件。 如果有人觉得有必要将这些翻译成另一个
语言,请这样做。 我会非常高兴将其包括在内
在此工具的未来版本中。
日志开始/绝对时间
----------------------------
如果您碰巧知道应用程序和 GC 日志何时启动,您
可以通过右键单击时间标尺并输入来指定该时间
开始时间。
错误报告
------------
要提交错误报告,只需向我发送一封包含错误描述的电子邮件
错误、生成 GC 数据的 JVM 的名称以及所有使用的标志
以及示例 GC 日志文件。
从源代码构建 GCViewer
----------------------------
从 http://maven.apache.org/ 下载并安装 Maven2
下载 GCViewer 的 src 发行版。
从 GCViewer 基目录执行(与 pom.xml 相同):
mvn clean install
可执行jar 将被放置在目标目录中。