常用的jvm参数

来源:互联网 发布:java单例模式调用 编辑:程序博客网 时间:2024/05/18 03:43

1.-verbose参数

参数格式     -verbose[:class|gc|jni]

class:在程序运行的时候究竟会有多少类被加载呢,一个简单程序会加载上百个类的!你可以用verbose:class来监视
gc:虚拟机发生内存回收时在输出设备显示信息
jni:输出native方法调用的相关情况,一般用于诊断jni调用错误信息
在eclipse中配置jvm参数 ,在window→prefrences→Java→installed jres 选中jre版本点击edit,在default vm arguments中配置jvm参数

@Testpublic void ptVerbose() {Byte[] b=null;for(int i=0;i<100;i++) {b = new Byte[1024];System.gc();}}

先配置-verbose:class打印部分结果
[Loaded java.net.URLStreamHandler from D:\devsoft\eclipse\Common\binary\com.sun.java.jdk.win32.x86_64_1.6.0.013\jre\lib\rt.jar]
[Loaded sun.net.www.protocol.file.Handler from D:\devsoft\eclipse\Common\binary\com.sun.java.jdk.win32.x86_64_1.6.0.013\jre\lib\rt.jar]
配置-verbose:gc打印部分结果
[GC 4520K->818K(123712K), 0.0016148 secs]
[Full GC 818K->753K(123712K), 0.0112020 secs]
[GC 1406K->785K(123712K), 0.0001458 secs]
[Full GC 785K->761K(123712K), 0.0105608 secs]
配置-verbose:jni打印部分结果
[Dynamic-linking native method java.lang.Object.registerNatives ... JNI]
[Registering JNI native method java.lang.Object.hashCode]
[Registering JNI native method java.lang.Object.wait]

2.-XX:+PrintGC和-verbose:gc一样,没有区别

打印结果
[GC 1427K->806K(123712K), 0.0001932 secs]
[Full GC 806K->750K(123712K), 0.0112838 secs]
[GC 1403K->782K(123712K), 0.0001209 secs]
[Full GC 782K->758K(123712K), 0.0079993 secs]

3.-XX:+PrintGCDetails          打印GC详细信息
-XX:+PrintGCTimeStamps    打印CG发生的时间戳

配置-XX:+PrintGCDetails 
[GC [PSYoungGen: 4520K->834K(37632K)] 4520K->834K(123712K), 0.0163590 secs] [Times: user=0.05 sys=0.00, real=0.03 secs] 
[Full GC (System) [PSYoungGen: 834K->0K(37632K)] [PSOldGen: 0K->753K(86080K)] 834K->753K(123712K) [PSPermGen: 6525K->6525K(21248K)], 0.0091507 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
[GC [PSYoungGen: 653K->32K(37632K)] 1406K->785K(123712K), 0.0001252 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
[Full GC (System) [PSYoungGen: 32K->0K(37632K)] [PSOldGen: 753K->761K(86080K)] 785K->761K(123712K) [PSPermGen: 6525K->6525K(21248K)], 0.0109535 secs] [Times: user=0.01 sys=0.00, real=0.01 secs] 
Heap
 PSYoungGen      total 37632K, used 1290K [0x00000000d9550000, 0x00000000dbf50000, 0x00000001035f0000)
  eden space 32256K, 4% used [0x00000000d9550000,0x00000000d9692940,0x00000000db4d0000)
  from space 5376K, 0% used [0x00000000dba10000,0x00000000dba10000,0x00000000dbf50000)
  to   space 5376K, 0% used [0x00000000db4d0000,0x00000000db4d0000,0x00000000dba10000)
 PSOldGen        total 86080K, used 761K [0x00000000853f0000, 0x000000008a800000, 0x00000000d9550000)
  object space 86080K, 0% used [0x00000000853f0000,0x00000000854ae688,0x000000008a800000)
 PSPermGen       total 21248K, used 6556K [0x000000007fff0000, 0x00000000814b0000, 0x00000000853f0000)
  object space 21248K, 30% used [0x000000007fff0000,0x00000000806573d8,0x00000000814b0000)
配置-XX:+PrintGCDetails  -XX:+PrintGCTimeStamps

3.-Xloggc:D:/gc.log   指定GC log的位置,以文件输出,帮助开发人员分析问题

4.-XX:+PrintHeapAtGC   每次一次GC后,都打印堆信息

{Heap before GC invocations=1 (full 0):
 PSYoungGen      total 37632K, used 4520K [0x00000000d9550000, 0x00000000dbf50000, 0x00000001035f0000)
  eden space 32256K, 14% used [0x00000000d9550000,0x00000000d99ba2f0,0x00000000db4d0000)
  from space 5376K, 0% used [0x00000000dba10000,0x00000000dba10000,0x00000000dbf50000)
  to   space 5376K, 0% used [0x00000000db4d0000,0x00000000db4d0000,0x00000000dba10000)
 PSOldGen        total 86080K, used 0K [0x00000000853f0000, 0x000000008a800000, 0x00000000d9550000)
  object space 86080K, 0% used [0x00000000853f0000,0x00000000853f0000,0x000000008a800000)
 PSPermGen       total 21248K, used 6525K [0x000000007fff0000, 0x00000000814b0000, 0x00000000853f0000)
  object space 21248K, 30% used [0x000000007fff0000,0x000000008064f4d0,0x00000000814b0000)
0.271: [GC [PSYoungGen: 4520K->818K(37632K)] 4520K->818K(123712K), 0.0136643 secs] [Times: user=0.00 sys=0.00, real=0.02 secs] 
Heap after GC invocations=1 (full 0):
 PSYoungGen      total 37632K, used 818K [0x00000000d9550000, 0x00000000dbf50000, 0x00000001035f0000)
  eden space 32256K, 0% used [0x00000000d9550000,0x00000000d9550000,0x00000000db4d0000)
  from space 5376K, 15% used [0x00000000db4d0000,0x00000000db59c990,0x00000000dba10000)
  to   space 5376K, 0% used [0x00000000dba10000,0x00000000dba10000,0x00000000dbf50000)
 PSOldGen        total 86080K, used 0K [0x00000000853f0000, 0x000000008a800000, 0x00000000d9550000)
  object space 86080K, 0% used [0x00000000853f0000,0x00000000853f0000,0x000000008a800000)
 PSPermGen       total 21248K, used 6525K [0x000000007fff0000, 0x00000000814b0000, 0x00000000853f0000)
  object space 21248K, 30% used [0x000000007fff0000,0x000000008064f4d0,0x00000000814b0000)
}

5.-XX:+TraceClassLoading监控类的加载

[Loaded java.nio.HeapCharBuffer from D:\devsoft\eclipse\Common\binary\com.sun.java.jdk.win32.x86_64_1.6.0.013\jre\lib\rt.jar]
[Loaded java.nio.charset.CoderResult from D:\devsoft\eclipse\Common\binary\com.sun.java.jdk.win32.x86_64_1.6.0.013\jre\lib\rt.jar]

6.-XX:+PrintClassHistogram

按下Ctrl+Break后,打印类的信息

7.-Xmx –Xms 指定最大堆和最小堆

8.-Xss栈的大小

通常只有几百K
决定了函数调用的深度
每个线程都有独立的栈空间
局部变量、参数 分配在栈上

9.-XX:PermSize  -XX:MaxPermSize   设置永久区的初始空间和最大空间表示,一个系统可以容纳多少个类型

10.-XX:OnOutOfMemoryError

在OOM时,执行一个脚本
"-XX:OnOutOfMemoryError=D:/tools/jdk1.7_40/bin/printstack.bat %p“
 当程序OOM时,在D:/a.txt中将会生成线程的dump
可以在OOM时,发送邮件,甚至是重启程序

11.-XX:+HeapDumpOnOutOfMemoryError   OOM时导出堆到文件
-XX:+HeapDumpPath  导出OOM的路径

12.-Xmn设置新生代大小
-XX:NewRatio  新生代(eden+2*s)和老年代(不包含永久区)的比值  ,4 表示 新生代:老年代=1:4,即年轻代占堆的1/5
-XX:SurvivorRatio 设置两个Survivor区和eden的比,8表示 两个Survivor :eden=2:8,即一个Survivor占年轻代的1/10


0 0
原创粉丝点击