美文网首页
常用的jvm参数

常用的jvm参数

作者: sunpy | 来源:发表于2018-09-19 21:57 被阅读8次

    jvm参数使用规则

    -XX:+<option>
    开启option参数。
    -XX:-<option>
    关闭option参数
    -XX:<option>=<value>
    将option参数的值设置为value。

    常用参数

    -Xms1024M
    表示设置JVM启动内存为1024M,必须以M为单位.
    -Xmx1024M
    表示设置JVM启动内存的最大值为1024M,必须以M为单位。
    -XX:+UseTLAB
    优先在本地线程缓冲区TLAB中分配对象,避免分配内存时的锁定过程,Sever模式下默认开启。
    -verbose:gc
    表示输出虚拟机中GC的详细情况。
    -Xss1024k
    表示可以设置虚拟机栈的大小为1024k。
    -Xoss1024k
    表示设置本地方法栈的大小为1024k。Hotspot不区分本地方法栈和虚拟机栈的,所以参数对于Hotspot无效。
    -Xmn20M
    表示设置年轻代的大小为20M**
    -XX:PermSize=1024M
    表示JVM初始分配的永久代的容量,必须以M为单位。
    -XX:MaxPermSize=1024M
    表示JVM允许分配的永久代的最大容量,必须以M为单位,大部分情况下这个参数默认为64M。
    -XX:+TraceClassLoading
    表示查看类的加载信息
    -XX:+TraceClassUnLoading
    表示查看类的卸载信息
    -XX:+HeapDumpOnOutOfMemoryError
    表示可以让虚拟机在出现内存溢出异常时Dump出当前的堆内存转储快照
    -XX:CompileThreshold=1000
    表示一个方法被调用1000次之后,会被认为是热点代码,并触发即时编译
    -XX:+UseTLAB
    开启TLAB分配
    -XX:TLABSize
    设置TLAB大小
    -XX:+ResizeTLAB
    自动调整TLAB大小
    -XX:+PrintTLAB
    表示可以看到TLAB的使用情况
    -XX:+UseSpining
    开启自旋锁
    -XX:+PreBlockSpin
    更改自旋锁的自旋次数,使用这个参数必须先开启自旋锁。


    GC参数

    -Xnoclassgc
    表示关闭JVM对类的垃圾回收
    -XX:+PrintGCDetails
    表示在控制台上打印出GC详细信息
    -XX:+PrintGC
    表示在控制台上打印出GC信息
    -XX:+PrintGCTimeStamps
    打印GC停顿耗时
    -XX:+PrintHeapAtGC
    表示可以看到每次GC前后堆内存布局
    -XX:+DisableExplictGC
    禁用显示GC
    -XX:+ExplictGCInvokesConcurrent
    使用并发方式处理显示GC

    ----------串行垃圾回收器-----------

    -XX:UseSerialGC
    新生代和老年代都使用串行垃圾收集器。
    -XX:NewRatio=4
    表示设置年轻代:老年代的大小比值为1:4,这意味着年轻代占整个堆的1/5。
    -XX:SurvivorRatio=8
    表示设置2个Survivor区:1个Eden区的大小比值为2:8,这意味着Survivor区占整个年轻代的1/5,这个参数默认为8。
    -XX:PretenureSizeThreshold=3145728
    表示对象大于3145728(3M)时直接进入老年代分配,这里只能以字节作为单位
    XX:MaxTenuringThreshold=1
    表示对象年龄大于1,自动进入老年代

    例子

    (1)类的加载与跟踪

    public class FollowClass {
        
        public static void main(String[] args) {
            Object obj = new Object();
        }
    }
    
    [root@izuf6ea4rfo45y44oj74jhz workspace]# java -XX:+TraceClassLoading FollowClass 
    [Opened /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre/lib/rt.jar]
    [Loaded java.lang.Object from /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre/lib/rt.jar]
    [Loaded java.io.Serializable from /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre/lib/rt.jar]
    [Loaded java.lang.Comparable from /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre/lib/rt.jar]
    [Loaded java.lang.CharSequence from /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre/lib/rt.jar]
    [Loaded java.lang.String from /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre/lib/rt.jar]
    [Loaded java.lang.reflect.AnnotatedElement from /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre/lib/rt.jar]
    [Loaded java.lang.reflect.GenericDeclaration from /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre/lib/rt.jar]
    [Loaded java.lang.reflect.Type from /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre/lib/rt.jar]
    [Loaded java.lang.Class from /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre/lib/rt.jar]
    。。。。
    

    (2)简单GC日志

    public class FollowClass {
    
            public static void main(String[] args) {
                    byte[] b = null;
    
                    for (int i = 0 ; i < 10 ; i++) {
                            b = new byte[1 * 1024 * 1024];
                    }
            }
    }
    
    root@izuf6ea4rfo45y44oj74jhz workspace]# java -Xmx20m -Xms5m -Xmn1m -XX:SurvivorRatio=2 -XX:+PrintGC FollowClass
    [GC (Allocation Failure)  4474K->4351K(5888K), 0.0009090 secs]
    [Full GC (Allocation Failure)  4351K->1278K(5888K), 0.0017932 secs]
    

    说明:GC收集新生代、Full GC收集整个堆。

    相关文章

      网友评论

          本文标题:常用的jvm参数

          本文链接:https://www.haomeiwen.com/subject/gsswnftx.html