java运行管理工具jps, jmap, jstack, gc log
2017-03-17 19:52
323 查看
在java代码运行时,我们需要了解程序的运行状态,尤其是内存使用状态、是否有内存泄漏等。以下几个内容有助于实时了解java程序的状态。
jps:
jps用于获取启动的java程序的进程号(pid),可能存在正在运行的多个java进程。用pid可以细查某个进程的状态。
jmap:
jmap是分析进程内存占用状态的神器,可以查看指定pid的内存使用状态。
jmap [option] {pid}
常用选项包括:
-histo:可以查看该pid占用内存中,各类对象的实例数和占用空间。通过不同类型对象的占用空间,可以初步判断是哪段代码可能出现的内存泄漏(通过判断哪里的代码会大量new出某种对象)。
-histo:live 仅打印活对象的信息。
-dump:[live,]format=b,file={path} 使用hprof二进制形式,输出jvm的heap内容到path下。live可选,和上面一样。
-finalizerinfo 打印正等候回收的对象的信息。
-heap 打印heap的概要信息,GC使用的算法,heap的配置及wise heap的使用情况。
gc log:
gc log是指java运行时,垃圾回收的日志。默认是关闭状态,在启动程序时可以添加选项打印gc log。选项如下:
-XX:+PrintGC 输出GC日志
-XX:+PrintGCDetails 输出GC的详细日志
-XX:+PrintGCTimeStamps 输出GC的时间戳(以基准时间的形式)
-XX:+PrintGCDateStamps 输出GC的时间戳(以日期的形式,如 2013-05-04T21:53:59.234+0800)
-XX:+PrintHeapAtGC 在进行GC的前后打印出堆的信息
-Xloggc:{path} 日志文件的输出路径
以上选项可以合并使用。指定gc日志进入的文件,详细记录了gc的日志。每条日志会说明该条日志对应哪个区的gc,前后占用内存,gc用时间等等。
对于新生代回收的一行日志,其基本内容如下:
2014-07-18T16:02:17.606+0800: 611.633: [GC 611.633: [DefNew: 843458K->2K(948864K), 0.0059180 secs] 2186589K->1343132K(3057292K), 0.0059490 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
含义如下:
2014-07-18T16:02:17.606+0800(当前时间戳): 611.633(时间戳): [GC(表示Young GC) 611.633: [DefNew(单线程Serial年轻代GC): 843458K(年轻代垃圾回收前的大小)->2K(年轻代回收后的大小)(948864K(年轻代总大小)), 0.0059180 secs(本次回收的时间)] 2186589K(整个堆回收前的大小)->1343132K(整个堆回收后的大小)(3057292K(堆总大小)), 0.0059490 secs(回收时间)]
[Times: user=0.00(用户耗时) sys=0.00(系统耗时), real=0.00 secs(实际耗时)]
老年代回收的日志如下:
2014-07-18T16:19:16.794+0800: 1630.821: [GC 1630.821: [DefNew: 1005567K->111679K(1005568K), 0.9152360 secs]1631.736: [Tenured: 2573912K->1340650K(2574068K), 1.8511050 secs] 3122548K->1340650K(3579636K), [Perm : 17882K->17882K(21248K)], 2.7854350 secs] [Times:
user=2.57 sys=0.22, real=2.79 secs]
jps:
jps用于获取启动的java程序的进程号(pid),可能存在正在运行的多个java进程。用pid可以细查某个进程的状态。
jmap:
jmap是分析进程内存占用状态的神器,可以查看指定pid的内存使用状态。
jmap [option] {pid}
常用选项包括:
-histo:可以查看该pid占用内存中,各类对象的实例数和占用空间。通过不同类型对象的占用空间,可以初步判断是哪段代码可能出现的内存泄漏(通过判断哪里的代码会大量new出某种对象)。
-histo:live 仅打印活对象的信息。
-dump:[live,]format=b,file={path} 使用hprof二进制形式,输出jvm的heap内容到path下。live可选,和上面一样。
-finalizerinfo 打印正等候回收的对象的信息。
-heap 打印heap的概要信息,GC使用的算法,heap的配置及wise heap的使用情况。
gc log:
gc log是指java运行时,垃圾回收的日志。默认是关闭状态,在启动程序时可以添加选项打印gc log。选项如下:
-XX:+PrintGC 输出GC日志
-XX:+PrintGCDetails 输出GC的详细日志
-XX:+PrintGCTimeStamps 输出GC的时间戳(以基准时间的形式)
-XX:+PrintGCDateStamps 输出GC的时间戳(以日期的形式,如 2013-05-04T21:53:59.234+0800)
-XX:+PrintHeapAtGC 在进行GC的前后打印出堆的信息
-Xloggc:{path} 日志文件的输出路径
以上选项可以合并使用。指定gc日志进入的文件,详细记录了gc的日志。每条日志会说明该条日志对应哪个区的gc,前后占用内存,gc用时间等等。
对于新生代回收的一行日志,其基本内容如下:
2014-07-18T16:02:17.606+0800: 611.633: [GC 611.633: [DefNew: 843458K->2K(948864K), 0.0059180 secs] 2186589K->1343132K(3057292K), 0.0059490 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
含义如下:
2014-07-18T16:02:17.606+0800(当前时间戳): 611.633(时间戳): [GC(表示Young GC) 611.633: [DefNew(单线程Serial年轻代GC): 843458K(年轻代垃圾回收前的大小)->2K(年轻代回收后的大小)(948864K(年轻代总大小)), 0.0059180 secs(本次回收的时间)] 2186589K(整个堆回收前的大小)->1343132K(整个堆回收后的大小)(3057292K(堆总大小)), 0.0059490 secs(回收时间)]
[Times: user=0.00(用户耗时) sys=0.00(系统耗时), real=0.00 secs(实际耗时)]
老年代回收的日志如下:
2014-07-18T16:19:16.794+0800: 1630.821: [GC 1630.821: [DefNew: 1005567K->111679K(1005568K), 0.9152360 secs]1631.736: [Tenured: 2573912K->1340650K(2574068K), 1.8511050 secs] 3122548K->1340650K(3579636K), [Perm : 17882K->17882K(21248K)], 2.7854350 secs] [Times:
user=2.57 sys=0.22, real=2.79 secs]
相关文章推荐
- 【Java】3.Java性能监控工具 笔记(jps 、jstack、jmap,jstat,process explorer)
- Java长期运行后, jps等工具无法连接jvm
- Java 工具(jmap,jstack)在linux上的源码分析(五) -F 参数的bug
- Java 工具(jmap,jstack)在linux上的源码分析(三)执行的线程vm thread
- Java自带的性能监测工具用法简介——jstack、jconsole、jinfo、jmap、jdb、jsta、jvisualvm
- Java 内存泄露监控工具-- JVM监控工具介绍jstack, jconsole, jinfo, jmap, jdb, jstat
- Java 工具(jmap,jstack)在linux上的源码分析(一)
- jvm查看诊断工具-jstat,jmap,jinfo,jps,jstack
- Java 工具(jmap,jstack)在linux上的源码分析(四)safe point
- jvm查看诊断工具-jstat,jmap,jinfo,jps,jstack
- Java自带的性能监测工具用法简介——jstack、jconsole、jinfo、jmap、jdb、jsta、jvisualvm
- Java 工具(jmap,jstack)在linux上的源码分析(三)执行的线程vm thread
- JAVA 自带测试vm工具TOOLS——jps、jinfo、jstat、jmap、jconsole
- Java 工具(jmap,jstack)在linux上的源码分析(六) -F 参数 如何读取线程列表
- JAVA 自带测试工具TOOLS——jps、jinfo、jstat、jmap、jconsole
- Java 内存泄露监控工具-- JVM监控工具介绍jstack, jconsole, jinfo, jmap, jdb, jstat
- Java 工具(jmap,jstack)在linux上的源码分析(四)safe point
- JAVA 自带测试工具TOOLS——jps、jinfo、jstat、jmap、jconsole
- Java 内存泄露监控工具 -- JVM监控工具介绍jstack, jconsole, jinfo, jmap, jdb, jsta
- Java 内存泄露监控工具-- JVM监控工具介绍jstack, jconsole, jinfo, jmap, jdb, jstat