在weblogic中打开gc日志开关并打印详细信息

ps:虽然是转载的,但是这里纠正下,ibm jdk中我用下面的方式没有成功,最后的完成方式是:

export JAVA_OPTIONS="$JAVA_OPTIONS -XX:+PrintGCDetails -verbosegc -Xverbosegclog:/leesin/gc.`date +%Y%m%d_%H%M%S`  -Xdump:system:events=user -javaagent:/lib/agent.jar"

-Xdump:system:events=user -javaagent:/lib/agent.jar 可以忽略,这是我需要添加的参数。
问题发现:http://www.wendangku.net/doc/e63c033f580216fc700afdc6.html


原文:

在相应的domain目录下进入setDomainEnv.sh

JAVA_OPTIONS="后面增加

sun jdk:

${JAVA_OPTIONS} -verbosegc -Xverboselog:/home/weblogic/bea/gc.`date +%Y%m%d_%H%M%S`

IBM jdk

${JAVA_OPTIONS} -verbosegc -Xloggc:/home/weblogic/bea/gc.`date +%Y%m%d_%H%M%S`

故此,gc开关打开

每次showdown的时候(包括宕机的情况),weblogic实例后就会生成gc日志文件来记录java虚拟机的gc日志,包括其中具体线程的详细信息

如果要打印gc的详细信息,则可以加上以下参数

-XX:+PrintGCDetails

gc日志会打印出类以下信息:

0.077: [GC 0.077: [DefNew: 1364K->437K(4928K), 0.0017301 secs]

0.079: [Tenured: 8704K->949K(10944K), 0.1680245 secs] 9556K->949K(15872K),

[Perm : 141K->141K(12288K)], 0.1698671 secs] [Times: user=0.00 sys=0.00, real=0.17 secs]

0.249: [Full GC (System) 0.249: [Tenured: 9141K->9142K(10944K), 0.0032902 secs] 9320K->9142K(15936K),

[Perm : 141K->141K(12288K)], 0.0033866 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]

Heap

def new generation total 6912K, used 122K [0x22cb0000, 0x23430000, 0x28200000)

eden space 6144K, 2% used [0x22cb0000, 0x22ccebf0, 0x232b0000)

from space 768K, 0% used [0x232b0000, 0x232b0000, 0x23370000)

to space 768K, 0% used [0x23370000, 0x23370000, 0x23430000)

tenured generation total 15240K, used 9142K [0x28200000, 0x290e2000, 0x32cb0000)

the space 15240K, 59% used [0x28200000, 0x28aed808, 0x28aeda00, 0x290e2000)

compacting perm gen total 12288K, used 141K [0x32cb0000, 0x338b0000, 0x36cb0000)

the space 12288K, 1% used [0x32cb0000, 0x32cd37a0, 0x32cd3800, 0x338b0000)

ro space 10240K, 45% used [0x36cb0000, 0x37137290, 0x37137400, 0x376b0000)

rw space 12288K, 54% used [0x376b0000, 0x37d3ace8, 0x37d3ae00, 0x382b0000)

  1. 0.077表示GC发生的时间,从JVM启动的时候开始算,单位是秒。

  2. [Tenured: 8704K->949K(10944K), 0.1680245 secs] 9556K->949K(15872K), 8704K->949K(10944K)表示GC前该内存区域已使用容量-> GC后该内存区域已使用容量 (该内存区域总容量),9556K->949K(15872K)表示GC前Java堆已使用容量 -> GC后Java堆已使用容量 (Java堆总容量)。

  3. GC和Full GC只是表示这次垃圾收集的停顿类型,而不是用来区分新生代GC还是老年代GC的。如果有Full,说明这次GC是发生了Stop-The-World。

  4. [DefNew]、[Tenured]、[Perm]表示GC发生的区域,这里显示的区域名称与使用的GC收集器是密切相关的,例如像上面的收集器中的新生代名为[Default New Generation],所以显示的是[DefNew]。如果是ParNew收集器,新生代名称就会变为[ParNew],意为[Parallel New Generation]。如果采用Parallel Scavenge收集器,那它配套的新生代称为[PSYoungGen],老年代和永久代同理,名称也是由收集器决定的。

因为gc日志中打印出的时间是距jvm启动后的时间,所以最好在创建gc日志文件时记录创建的时间,如

`date +%Y%m%d_%H%M%S`

这样才能具体算出具体的gc时间

转载于:https://my.oschina.net/u/914897/blog/530739

发布了501 篇原创文章 · 获赞 2066 · 访问量 173万+

猜你喜欢

转载自blog.csdn.net/dataiyangu/article/details/103488518