java虚拟机参数(Java Virtual Machine Arguments)
- -verbose[:class|gc|jni] :
在输出设备上显示虚拟机运行信息。 - -verbose:class
在程序运行的时候有多少类被加载 - –verbose:gc
在虚拟机发生内存回收时在输出设备显示信息,格式如下:
[Full GC 256K->160K(124096K), 0.0042708 secs] 该参数用来监视虚拟机内存回收的情况。 - –verbose:jni
输出native方法调用的相关情况,一般用于诊断jni调用错误信息。 - -Xmx:
分配的最大堆内存 - -Xms:
分配的最小堆内存,如:-Xmx20M - -Xmn:
分配给新生代内存,如: -Xmn10M -Xss:
设置虚拟机栈容量-XX:+HeapDumpOnOutOfMemoryError
该配置会把内存溢出快照保存在user.dir中,比如你用tomcat启动,那应该是在tomcat的bin目录下-XX:HeapDumpPath
指定快照保存位置,如:/tmp/heapdump.hprof-XX:OnOutOfMemoryError
OnOutOfMemoryError参数允许用户指定当出现oom时,指定某个脚本来完成一些动作,比如邮件知会
如:-XX:OnOutOfMemoryError =”sh ~/cleanup.sh”-XX:MaxDirectMemorySize
分配直接内存DirectMemory,如:-XX:MaxDirectMemorySize=10M-XX:+PrintGCDetail
打印垃圾回收详细信息。- -XX:+PrintGCTimeStamps
可以了解这些垃圾收集发生的时间,自JVM启动以后以秒计量。 - -xx:+PrintHeapAtGC
开关了解堆的更详细的信息。 - -Xloggc:$CATALINA_BASE/logs/gc.log gc
日志产生的路径 - -XX:+PrintGCApplicationStoppedTime
输出GC造成应用暂停的时间 - -XX:+PrintGCDateStamps GC
发生的时间信息 - -server:
设置JVM为服务器端模式 - -client
设置JVM为客户端模式,与server模式垃圾收集器等其他东西都不同。 - -XX:+UseSerialGC
指定JVM垃圾收集器为SerialGCC,在深入理解Java虚拟机3.5.9节有详细说明 - -XX:PretenureSizeThreshold
令大于这个设置值的对象直接在老年代分配,而不是先在Eden分配,只对Serial与ParNew两款收集器有用,如:-XX:PretenureSizeThreshold=3145728,代表3M -XX:+PrintFlagsFinal
参数可查看默认设置收集器类型,如下:
第三列”=”表示第四列是参数的默认值,而”:=” 表明了参数被用户或者JVM赋值了。C:\Users>java -XX:+PrintFlagsFinal [Global flags] uintx AdaptiveSizeDecrementScaleFactor = 4 {product} uintx AdaptiveSizeMajorGCDecayTimeScale = 10 {product} uintx AdaptiveSizePausePolicy = 0 {product} bool UseParallelGC := true {product}
- -XX:+PrintCommandLineFlags
这个参数让JVM打印出那些已经被用户或者JVM设置过的详细的XX参数的名称和值。
即上一个参数中显示为:=的参数
显示如下:
C:\Users>java -XX:+PrintCommandLineFlags
-XX:InitialHeapSize=65305088 -XX:MaxHeapSize=1044881408 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC
eclipse调优
- -Xverify:none
在eclipse.ini文件中设置,表示禁止字节码验证过程