晋南讲堂之JVM参数配置(一)

JVM参数配置(一)

1.跟踪参数

  (1) 打印GC的相关简要信息

  可以采用设置"-verbose:gc"或者"-XX:+printGC"两种方式。打印出来的信息如下面的形式

[GC 4790K->374K(15872K), 0.0001606 secs]
[GC 4790K->374K(15872K), 0.0001474 secs]

  这样形式的信息表示GC之前堆内存使用了4790K,GC之后使用了374K,整个堆内存大小为15872K。

  (2) 打印GC详细的信息

  可以采用设置"-XX:+PrintGCDetails"打印GC的详细信息。如果需要知道GC的时间戳,则加上"-XX:+PrintGCTimeStamps"。打印出来的信息如下面的形式(未加时间戳):

[GC[DefNew: 4416K->0K(4928K), 0.0001897 secs] 4790K->374K(15872K), 0.0002232 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
25
Heap
 def new generation   total 13824K, used 11223K [0x27e80000, 0x28d80000, 0x28d80000)
 eden space 12288K,  91% used [0x27e80000, 0x28975f20, 0x28a80000)
 from space 1536K,   0% used [0x28a80000, 0x28a80000, 0x28c00000)
 to   space 1536K,   0% used [0x28c00000, 0x28c00000, 0x28d80000)
 tenured generation   total 5120K, used 0K [0x28d80000, 0x29280000, 0x34680000)
 the space 5120K,   0% used [0x28d80000, 0x28d80000, 0x28d80200, 0x29280000)
 compacting perm gen  total 12288K, used 142K [0x34680000, 0x35280000, 0x38680000)
 the space 12288K,   1% used [0x34680000, 0x346a3a90, 0x346a3c00, 0x35280000)
 ro space 10240K,  44% used [0x38680000, 0x38af73f0, 0x38af7400, 0x39080000)
 rw space 12288K,  52% used [0x39080000, 0x396cdd28, 0x396cde00, 0x39c80000)

  看第一行这是一个针对新生代的GC,在程序结束以后会把堆的情况打印出来。第四行新生代一共有13824K的空间,已经使用了11223K。其中eden区(对象出生的地方)有12288K大小,使用了91%。from和to是新生代的两个survivor区(幸存代),大小一定相等。然后描述了老年代(tenured generation)的使用情况,老年代总共大小约5M,未被使用。永久代(PermGen)(JAVA 8中已经移除了永久代,取而代之的是MetaSpace(元空间))总共约12M,已经被使用了142K,ro和rw是两个共享区间,ro是只读区间,rw为可读可写区间。

  (3) 指定路径以日志文件形式输出GC的信息

  设置参数"-Xloggc:log/gc.log",表示在当前src路径下的log文件夹下输出GC的日志文件gc.log,其中路径文件需要自己创建,比如我需要在src下创建一个log文件夹,而gc.log是系统自动创建。设置该参数后则运行时不再在控制台输出GC信息。

  (4) 每一次GC后都打印堆信息

  设置参数"-XX:+PrintHeapAtGC",表示每一次垃圾收集后都要输出堆信息。

{Heap before GC invocations=0 (full 0):
 def new generation   total 3072K, used 2752K [0x33c80000, 0x33fd0000, 0x33fd0000)
 eden space 2752K, 100% used [0x33c80000, 0x33f30000, 0x33f30000)
 from space 320K,   0% used [0x33f30000, 0x33f30000, 0x33f80000)
 to   space 320K,   0% used [0x33f80000, 0x33f80000, 0x33fd0000)
 tenured generation   total 6848K, used 0K [0x33fd0000, 0x34680000, 0x34680000)
 the space 6848K,   0% used [0x33fd0000, 0x33fd0000, 0x33fd0200, 0x34680000)
 compacting perm gen  total 12288K, used 143K [0x34680000, 0x35280000, 0x38680000)
 the space 12288K,   1% used [0x34680000, 0x346a3c58, 0x346a3e00, 0x35280000)
 ro space 10240K,  44% used [0x38680000, 0x38af73f0, 0x38af7400, 0x39080000)
 rw space 12288K,  52% used [0x39080000, 0x396cdd28, 0x396cde00, 0x39c80000)
[GC[DefNew: 2752K->320K(3072K), 0.0014296 secs] 2752K->377K(9920K), 0.0014604 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
Heap after GC invocations=1 (full 0):
 def new generation   total 3072K, used 320K [0x33c80000, 0x33fd0000, 0x33fd0000)
 eden space 2752K,   0% used [0x33c80000, 0x33c80000, 0x33f30000)
 from space 320K, 100% used [0x33f80000, 0x33fd0000, 0x33fd0000)
 to   space 320K,   0% used [0x33f30000, 0x33f30000, 0x33f80000)
 tenured generation   total 6848K, used 57K [0x33fd0000, 0x34680000, 0x34680000)
 the space 6848K,   0% used [0x33fd0000, 0x33fde458, 0x33fde600, 0x34680000)
 compacting perm gen  total 12288K, used 143K [0x34680000, 0x35280000, 0x38680000)
 the space 12288K,   1% used [0x34680000, 0x346a3c58, 0x346a3e00, 0x35280000)
 ro space 10240K,  44% used [0x38680000, 0x38af73f0, 0x38af7400, 0x39080000)
 rw space 12288K,  52% used [0x39080000, 0x396cdd28, 0x396cde00, 0x39c80000)
}

  (5) 监控类的加载

  设置参数"-XX:+TraceClassLoading",会在控制台输出类的加载过程。如下所示

[Opened C:\Program Files\Java\jre1.8.0_101\lib\rt.jar]
[Loaded java.lang.Object from C:\Program Files\Java\jre1.8.0_101\lib\rt.jar]
[Loaded java.io.Serializable from C:\Program Files\Java\jre1.8.0_101\lib\rt.jar]
[Loaded java.lang.Comparable from C:\Program Files\Java\jre1.8.0_101\lib\rt.jar]
[Loaded java.lang.CharSequence from C:\Program Files\Java\jre1.8.0_101\lib\rt.jar]
[Loaded java.lang.String from C:\Program Files\Java\jre1.8.0_101\lib\rt.jar]
[Loaded java.lang.reflect.AnnotatedElement from C:\Program Files\Java\jre1.8.0_101\lib\rt.jar]
[Loaded java.lang.reflect.GenericDeclaration from C:\Program Files\Java\jre1.8.0_101\lib\rt.jar]
[Loaded java.lang.reflect.Type from C:\Program Files\Java\jre1.8.0_101\lib\rt.jar]
[Loaded java.lang.Class from C:\Program Files\Java\jre1.8.0_101\lib\rt.jar]
[Loaded java.lang.Cloneable from C:\Program Files\Java\jre1.8.0_101\lib\rt.jar]
[Loaded java.lang.ClassLoader from C:\Program Files\Java\jre1.8.0_101\lib\rt.jar]
[Loaded java.lang.System from C:\Program Files\Java\jre1.8.0_101\lib\rt.jar]
[Loaded java.lang.Throwable from C:\Program Files\Java\jre1.8.0_101\lib\rt.jar]

  (6) 打印类的直方图

  设置参数"-XX:+PrintClassHistogram",会在控制台输出类的使用情况。当然加上这个参数如果不做一些操作在控制台不会打印任何信息。当按下Ctrl+Break之后,会在控制台打印类的使用情况。如下所示,从左至右为序号、实例数量、所占空间、类名

num     #instances         #bytes  class name
----------------------------------------------
   1:        890617      470266000  [B
   2:        890643       21375432  java.util.HashMap$Node
   3:        890608       14249728  java.lang.Long
   4:            13        8389712  [Ljava.util.HashMap$Node;
   5:          2062         371680  [C
   6:           463          41904  java.lang.Class

1.堆的分配参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值