GCViewer 1.36
=============
[![Build Status](https://travis-ci.org/chewiebug/GCViewer.svg?branch=develop)](https://travis-ci.org/chewiebug/GCViewer)
[![codecov.io](https://codecov.io/github/chewiebug/GCViewer/coverage.svg?branch=develop)](https://codecov.io/github/chewiebug/GCViewer?branch=develop)
GCViewer is a little tool that visualizes verbose GC output
generated by Sun / Oracle, IBM, HP and BEA Java Virtual Machines. It
is free software released under GNU LGPL.
You can start GCViewer (gui) by simply double-clicking on gcviewer-1.3x.jar
or running java -jar gcviewer-1.3x.jar (it needs a java 1.8 vm to run).
For a cmdline based report summary just type the following to generate a report (including optional chart image file):
`java -jar gcviewer-1.3x.jar gc.log summary.csv [chart.png] [-t PLAIN|CSV|CSV_TS|SIMPLE|SUMMARY]`
When logfile rotation (-XX:+UseGCLogFileRotation) is enabled, the logfiles can be read at once:
`java -jar gcviewer-1.3x.jar gc.log.0;gc.log.1;gc.log.2;gc.log.current summary.csv [chart.png] [-t PLAIN|CSV|CSV_TS|SIMPLE|SUMMARY]`
Supported verbose:gc formats are:
- some support for OpenJDK 9 / 10 unified logging format -Xlog:gc:<file>, the following configurations will work
- -Xlog:gc:file="path-to-file" (uses defaults)
- -Xlog:gc=info:file="path-to-file":tags,uptime,level (minimum configuration needed)
- -Xlog:gc*=trace:file="path-to-file":tags,time,uptime,level
(maximum configuration supported, additional tags ok, but ignored; additional decorations will break parsing)
- Oracle JDK 1.8 -Xloggc:<file> [-XX:+PrintGCDetails] [-XX:+PrintGCDateStamps]
- Sun / Oracle JDK 1.7 with option -Xloggc:<file> [-XX:+PrintGCDetails] [-XX:+PrintGCDateStamps]
- Sun / Oracle JDK 1.6 with option -Xloggc:<file> [-XX:+PrintGCDetails] [-XX:+PrintGCDateStamps]
- Sun JDK 1.4/1.5 with the option -Xloggc:<file> [-XX:+PrintGCDetails]
- Sun JDK 1.2.2/1.3.1/1.4 with the option -verbose:gc
- IBM JDK 1.3.1/1.3.0/1.2.2 with the option -verbose:gc
- IBM iSeries Classic JVM 1.4.2 with option -verbose:gc
- HP-UX JDK 1.2/1.3/1.4.x with the option -Xverbosegc
- BEA JRockit 1.4.2/1.5/1.6 with the option -verbose:memory [-Xverbose:gcpause,gcreport] [-Xverbosetimestamp]
Best results for non unified gc logging Oracle JDKs are achieved with: -Xloggc:<file> -XX:+PrintGCDetails -XX:+PrintGCDateStamps.
A few other options are supported, but most of the information generated is ignored by GCViewer
(the javadoc introduction of
https://github.com/chewiebug/GCViewer/blob/master/src/main/java/com/tagtraum/perf/gcviewer/imp/DataReaderSun1_6_0.java
shows the details).
Hendrik Schreiber wrote GCViewer up to 1.29. What you are seeing here is based
on his very good work.
Links to detailed descriptions of many JVM parameters relevant to garbage collection
can be found in the links section of https://github.com/chewiebug/GCViewer/wiki
Results of log analysis
=======================
There are two sections, where the results of the log analysis are shown.
One is the left side with the chart, the other the data panel on the right side.
In the following, the content of these sections is explained.
Chart
-----
GCViewer shows a number of lines etc. in a chart (first tab). These are:
- Full GC Lines:
- Black vertical line at every Full GC
- Inc GC Lines:
- Cyan vertical line at every Incremental GC
- GC Times Line:
- Green line that shows the length of all GCs
- GC Times Rectangles:
- black rectangle at every Full GC
- blue rectangle at every inital mark event
- orange rectangle at every remark event
- red rectangle at every vm operation event ("application stopped...")
- Grey rectangle at every 'normal' GC
- Light grey rectangle at every Incremental GC
- Total Heap:
- Red line that shows heap size
- Tenured Generation:
- Magenta area that shows the size of the tenured generation
(not available without PrintGCDetails)
- Young Generation:
- Orange area that shows the size of the young generation
(not available without PrintGCDetails)
- Used Heap:
- Blue line that shows used heap size
- Initial mark level:
- Yellow line that shows the heap usage at "initial-mark" event
(only available when the gc algorithm uses concurrent
collections, which is the case for CMS and G1)
- Concurrent collections
- Cyan vertical line for every begin (concurrent-mark-start)
and pink vertical line for every end (CMS-concurrent-reset /
G1: concurrent-cleanup-end) of a concurrent collection cycle
Event details
-------------
In the second tab it shows details about the events it parsed:
E.g. events like the following
24.187: [GC 24.188: [ParNew: 93184K->5464K(104832K), 0.0442895 secs] \
93184K->5464K(1036928K), 0.0447149 secs] \
[Times: user=0.39 sys=0.07, real=0.05 secs]
are shown in one line as
GC ParNew: <number of events parsed>, <min duration>, <max duration>...
Events like these
4183.962: [Full GC 4183.962: [CMS: 32957K->40326K(932096K), 2.3313389 secs] \
76067K->40326K(1036928K), [CMS Perm : 43837K->43453K(43880K)], 2.3339606 secs] \
[Times: user=2.33 sys=0.01, real=2.33 secs]
are shown as
Full GC; CMS; CMS Perm <number of events parsed> ...
So for every line the text is extracted (not always every part of it). This allows
a user which is familiar with the text log files to find out more details about
the events that occurred.
### Gc pauses
This are shows all stop-the-world pauses, that are not full gc pauses.
### Full gc pauses
In this area all pauses are shown, which GCViewer considers as "full gc"
pauses. The current definition of a "full gc" is: Either the gc algorithm
prints "full gc" in its event name, or more than one generation (young,
old, permgen / metaspace) were involved during collection.
### VM operations overhead (safepoint pauses)
This area is only shown, if the gc log was written with the option
-XX:+PrintGCApplicationStoppedTime. To understand the meaning of this
metric, it is important to know about safepoints (see e.g.
http://blog.ragozin.info/2012/10/safepoints-in-hotspot-jvm.html).
If GCViewer finds gc log lines like the following:
2017-03-29T14:37:12.812+0200: 8.832: [GC (Allocation Failure) \
[PSYoungGen: 29146K->3457K(29184K)] 78228K->52539K(116736K), 0.0009340 secs] \
[Times: user=0.00 sys=0.00, real=0.00 secs]
2017-03-29T14:37:12.813+0200: 8.833: Total time for which application \
threads were stopped: 0.0010682 seconds, Stopping threads took: 0.0000155 seconds
GCViewer will report one event in the "Gc pauses" area and one in this area.
The pause duration reported for "Total time..." will be 0.0001342s
(0.0010682 (duration of safepoint pause) - 0.0009340 (duration of gc pause))
So GCViewer only calculates the additional overhead needed for the whole
safepoint on top of the gc pause.
If the event immediately before the "Total time..." event was not a any
kind of gc pause, but another "Total time..." event, then the whole pause
for "Total time..." will be recorded for this event. In this case the
safepoint was not caused by a gc pause.
### Concurrent GCs
This are contains information about concurrent collection cycles, if
the gc algorithm used them. The time reported here is spent while the
application threads are running. It is possible to read here, how long
concurrent gc operations took until they finished.
Parser
------
In the third tab the output of the parser is shown. If there were warnings
during the parsing process or other output, you can check there.
Data Panel
==========
GCViewer provides some metrics to help you interpret the chart.
Note that some metrics based on averages are shown along with
their standard deviation. If it is obvious that the standard
deviation is fairly big in comparison to the average, the values
are grayed out, indicating that actual values are much smaller
or bigger than the average.
Summary
-------
- Footprint:
- Maximal amount of memory allocated
- Max heap after conc GC:
- Max used heap after concurrent gc.
- Max tenured afte
没有合适的资源?快使用搜索试试~ 我知道了~
GCViewer1.36的源代码
共418个文件
java:222个
txt:145个
png:17个
需积分: 0 1 下载量 184 浏览量
2023-08-21
10:10:02
上传
评论
收藏 3.13MB ZIP 举报
温馨提示
原来的下载连接为 https://github.com/chewiebug/GCViewer ,上传这份代码是为了帮助无法从原连接下载的朋友,我已使用这份代码正常编译出执行文件,编译系统用的是centos7.2,在编译时,使用此命令 mvn clean install -Dmaven.test.skip=true 即可跳过测试,我在编译过程中刚开始没有跳过测试,无法生成执行文件
资源推荐
资源详情
资源评论
收起资源包目录
GCViewer1.36的源代码 (418个子文件)
run-docker.bat 85B
.classpath 2KB
Dockerfile 55B
secring.gpg.enc 4KB
pubring.gpg.enc 2KB
gcviewericon.gif 1KB
add.gif 947B
.gitattributes 1KB
.gitignore 136B
.gitignore 8B
SampleSun1_6_0PrintHeapAtGC.txt.gz 559B
GCViewer.icns 3KB
TestDataReaderSun1_6_0.java 55KB
AbstractGCEvent.java 43KB
GCModel.java 41KB
DataReaderSun1_6_0.java 38KB
ModelMetricsPanel.java 33KB
DataReaderSun1_6_0G1.java 31KB
DataReaderUnifiedJvmLogging.java 31KB
TestDataReaderSun1_7_0G1.java 30KB
ModelChartImpl.java 29KB
TestDataReaderUJLShenandoah.java 28KB
AbstractDataReaderSun.java 28KB
TestDataReaderSun1_7_0.java 26KB
GCDocument.java 24KB
TestDataReaderSun1_8_0.java 21KB
TestDataReaderSun1_6_0G1.java 20KB
SummaryDataWriter.java 19KB
GCViewerGuiBuilder.java 19KB
ModelDetailsPanel.java 17KB
TestDataReaderFactory.java 16KB
PolygonChartRenderer.java 14KB
IBMJ9SAXHandler.java 13KB
DataReaderIBM_J9_R28.java 13KB
DataReaderFactory.java 11KB
DataReaderHPUX1_4_1.java 11KB
OSXAdapter.java 11KB
ChartPanelView.java 11KB
TestDataReaderUJLG1.java 11KB
TestDataReaderSun1_4_0.java 10KB
TestDataReaderUJLZGC.java 10KB
OSXSupport.java 10KB
DataReaderJRockit1_5_0.java 10KB
DataReaderJRockit1_6_0.java 10KB
TestDataReaderUJLG1JDK11.java 10KB
TestDataReaderSun1_8_0G1.java 9KB
NumberParser.java 9KB
DataReaderIBMi5OS1_4_2.java 9KB
TestDataReaderUJLSerial.java 9KB
TestDataReaderJRockit1_4_2.java 8KB
TestDataReaderUJLCMS.java 8KB
DataReaderIBM1_4_2.java 8KB
TestDataReaderJRockit1_6_0.java 8KB
GcSeriesLoader.java 8KB
GcSeriesLoaderTest.java 8KB
GCPreferences.java 8KB
DataReaderIBM1_3_1.java 8KB
TestHttpUrlConnectionHelper.java 8KB
DataReaderHPUX1_2.java 8KB
TestDataReaderJRockit1_5_0.java 7KB
GCResourceGroup.java 7KB
DataReaderJRockit1_4_2.java 7KB
TestDataReaderFacade.java 7KB
AboutDialog.java 7KB
GCModelLoaderControllerImpl.java 7KB
UnittestHelper.java 7KB
Export.java 7KB
GCViewerGuiController.java 7KB
TestDataReaderUJLParallel.java 6KB
HttpUrlConnectionHelper.java 6KB
TestGCResourceGroup.java 6KB
GCEvent.java 6KB
SummaryDataWriterTest.java 6KB
TestDataReaderSun1_5_0.java 6KB
DataReaderFacade.java 6KB
TestGCModelLoaderController.java 6KB
TestDataReaderIBM_J9_R28.java 6KB
GCViewer.java 6KB
GCViewerGuiInternalFrameController.java 6KB
GCViewerGuiMenuBar.java 5KB
DataReaderIBM1_3_0.java 5KB
TestAbstractGCEvent.java 5KB
DataReaderSun1_2_2.java 5KB
TestAbstractDataReaderSun.java 5KB
TestGCViewerArgsParser.java 5KB
GCModelLoaderView.java 5KB
TextFileViewer.java 5KB
TestGcEvent.java 5KB
SimpleGcWriterTest.java 4KB
Watch.java 4KB
OSXFullScreen.java 4KB
ViewMenuController.java 4KB
GcResourceSeries.java 4KB
DataReaderTools.java 4KB
SimpleChartRenderer.java 4KB
TestGCEventUJL.java 4KB
AutoCompletionTextField.java 4KB
SimpleGcWriter.java 4KB
MemoryFormat.java 4KB
DataReaderSun1_3_1.java 4KB
共 418 条
- 1
- 2
- 3
- 4
- 5
资源评论
yygy3748
- 粉丝: 0
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功