zoukankan      html  css  js  c++  java
  • JVM运行参数

    一、三种参数类型

       1、标准参数:比较稳定,以后版本会保留

          -help

          -version

       2、-X参数(非标准参数)

          -Xint

          -Xcomp

       3、-XX参数(非标准参数,使用率较高)

          -XX:newSize

          -XX:+UseSerialGC

    二、标准参数

      一般都是很稳定的,在未来jvm版本中不会改变,可以使用java -help检索出所有的标准参数。

    三、-X参数

      非标准选项,如有更改,恕不另行通知。

      使用java -X检索出-X的参数。

       -Xint,-Xcomp,-Xmixed

        -Xint会强制JVM执行所有的字节码,会降低运行速度,通常低10倍或更多。

        -Xcomp与-Xint相反,会把所有的字节码编译成本地代码。

        -Xmixed是混合模式,是JVM的默认模式,推荐。

    四、-XX参数

      主要用于JVM的调优和debug操作。有两种,boolean类型和非boolean类型。

       boolean类型

        格式:-XX:[+-]<name> 表示启用或禁用<name>属性。

        如:-XX:+DisableExplicitGC 表示禁止用手动调用gc操作,也就是System.gc()无效。

       非boolean类型

        格式:-XX:<name>=<value> 表示<name>属性的值为<value>。

        如:-XX:NewRatio=1表示新生代和老年代的比值。

       -Xms 与 -Xmx参数

        -Xms512m:等价于-XX:InitialHeapSize=512m,设置初始堆内存为512M。

        -Xmx2048m:等价于-XX:MaxHeapSize=2048m,设置最大堆内存为2048M。

     五、查看jvm的运行参数

      1、运行java命令时打印参数

        添加参数-XX:+PrintFlagsFinal。

       2、查看正在运行的jvm参数 

        查看所有java进程:jps -l

        查看某进程的jvm参数:jinfo -flags ${pid}  /  jinfo -flag <参数名> ${pid}

    六、jvm的内存模型

      1、jdk1.7的堆内存模型

         Young年轻代

         Tenured老年代

         Perm永久代

       2、jdk1.8的堆内存模型

        

           Young年轻代

           Tenured老年代

           元空间(占用系统内存)

        3、查看堆内存使用情况

          jstat命令可以查看堆内存各部分的使用量,以及加载类的数量。

            jstat [-命令选项] [进程id] [间隔时间/毫秒] [查询次数]

            例1查看class加载统计

              C:Userslenovo>jstat -class 11976
              Loaded   Bytes      Unloaded   Bytes   Time
              4730       9436.1    0                 0.0       10.54

            说明:

              loaded:加载class的数量

              bytes:所占用空间大小

              unloaded:未加载占用空间

              time:时间

            例2查看编译统计        

              C:Userslenovo>jstat -compiler 11976
              Compiled  Failed  Invalid  Time      FailedType    FailedMethod
              2970           0            0       13.28    0

            说明:

              compiled:编译数量

              failed:失败数量

              invalid:不可用数量

              time:时间

              failedType:失败类型

              failedMethod:失败的方法

            例3垃圾回收统计        

                jstat -gc 11976
                S0C         S1C         S0U   S1U   EC             EU           OC   

                24576.0   25600.0   0.0     0.0     206336.0   54242.5   59392.0 

                                               OU           MC           MU           CCSC    CCSU     YGC    YGCT  FGC

                27371.7   27096.0    26635.1   3200.0   3028.4     17        0.210  2 

                FGCT    GCT 

                0.160     0.370

             说明:

              S0C:第一个survivor区的大小(kb)

              S1C:第二个survivor区的大小(kb)

              S0U:第一个survivor区的使用大小(kb)

              S1U:第二个survivor区的使用大小(kb)

              EC:Eden区的大小 (kb)

              EU:Eden区的使用大小 (kb)

              OC:Old区的大小 (kb)

              OU:Old区的使用大小 (kb)

              MC:方法区的大小 (kb)

              MU:方法区的使用大小 (kb)

              CCSC:压缩类空间大小(kb)

              CCSU:压缩类空间使用大小(kb)

              YGC:年轻代垃圾回收次数

              YGCT:年轻代垃圾回收消耗时间

              FGC:老年代垃圾回收次数

              FGCT:老年代垃圾回收消耗时间

              GCT:垃圾回收消耗总时间

    七、jmap的使用以及内存溢出分析

       1、查看内存使用情况

          jmap -heap 11976

        2、查看内存中对象数量及大小

          查看所有对象,包括活跃及非活跃:jmap -histo ${pid} | more

          查看活跃对象:jmap -histo:live ${pid} | more

          

  • 相关阅读:
    [zz]redhat6.0无法识别ntfs分区的解决方法
    使用ftp搭建yum源问题解决
    [zz]搭建centos6.0本地yum源(32位)
    JAVA传统线程技术
    JAVA判断字符串是否为数字
    java之异常
    随便记两笔Java中的反射
    【转】单例模式完全解析
    java.lang.Enum
    文件搜索
  • 原文地址:https://www.cnblogs.com/hmxs/p/11754021.html
Copyright © 2011-2022 走看看