现在来解释各列含义:
- S0C、S1C、S0U、S1U:Survivor 0/1区容量(Capacity)和使用量(Used)
- EC、EU:Eden区容量和使用量
- OC、OU:年老代容量和使用量
- PC、PU:永久代容量和使用量
- YGC、YGT:年轻代GC次数和GC耗时
- FGC、FGCT:Full GC次数和Full GC耗时
- GCT:GC总耗时
E、hprof(Heap/CPU Profiling Tool)
hprof能够展现CPU使用率,统计堆内存使用情况。
语法格式如下:
- java -agentlib:hprof[=options] ToBeProfiledClass
- java -Xrunprof[:options] ToBeProfiledClass
- javac -J-agentlib:hprof[=options] ToBeProfiledClass
完整的命令选项如下:
- Option Name and Value Description Default
- --------------------- ----------- -------
- heap=dump|sites|all heap profiling all
- cpu=samples|times|old CPU usage off
- monitor=y|n monitor contention n
- format=a|b text(txt) or binary output a
- file=<file> write data to file java.hprof[.txt]
- net=<host>:<port> send data over a socket off
- depth=<size> stack trace depth 4
- interval=<ms> sample interval in ms 10
- cutoff=<value> output cutoff point 0.0001
- lineno=y|n line number in traces? y
- thread=y|n thread in traces? n
- doe=y|n dump on exit? y
- msa=y|n Solaris micro state accounting n
- force=y|n force output to <file> y
- verbose=y|n print messages about dumps y
来几个官方指南上的实例。
CPU Usage Sampling Profiling(cpu=samples)的例子:
- java -agentlib:hprof=cpu=samples,interval=20,depth=3 Hello
上面每隔20毫秒采样CPU消耗信息,堆栈深度为3,生成的profile文件名称是java.hprof.txt,在当前目录。
CPU Usage Times Profiling(cpu=times)的例子,它相对于CPU Usage Sampling Profile能够获得更加细粒度的CPU消耗信息,能够细到每个方法调用的开始和结束,它的实现使用了字节码注入技术(BCI):
- javac -J-agentlib:hprof=cpu=times Hello.java
Heap Allocation Profiling(heap=sites)的例子:
- javac -J-agentlib:hprof=heap=sites Hello.java
Heap Dump(heap=dump)的例子,它比上面的Heap Allocation Profiling能生成更详细的Heap Dump信息:
- javac -J-agentlib:hprof=heap=dump Hello.java
【编辑推荐】
- 对JVM还有什么不懂的?带你深入浅出JVM!
- 一文带你深入理解JVM
- 你真的了解JVM吗?
- Java8 JVM内存结构变了,永久代到元空间
- 竟然还有人没搞懂 JVM 类加载器?一文彻底明白
【责任编辑:武晓燕 TEL:(010)68476606】
点赞 0 (编辑:晋中站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|