美文网首页
深入理解java虚拟机——常用虚拟机参数

深入理解java虚拟机——常用虚拟机参数

作者: DaemonXiao | 来源:发表于2019-03-25 20:39 被阅读0次

    1 跟踪调试参数

    1.1 跟踪垃圾回收

    -XX:+PrintGC:使用这个参数启动Java虚拟机后,只要遇到GC,就会打印日志。
    -XX:+PrintGCDetails:获取更详细的GC信息。
    -XX:+PrintHeapAtGC:可以在每次GC前后分别打印堆的信息。
    -XX:+PrintGCTimeStamps:会在每次GC发生时,额外输出GC发生的时间,该输出时间为虚拟机启动后的时间偏移量。
    -XX:+PrintGCApplicationConcurrentTime:可以打印应用程序的执行时间
    -XX:+PrintGCApplicationStoppedTime:可以打印应用程序由于GC而产生的停顿时间。
    -XX:+PrintReferenceGC:用来跟踪系统内的软引用、弱引用、虚引用和Finallize队列。

    1.2 类加载/卸载的跟踪

    -XX:+TraceClassLoading:跟踪类的加载。
    -XX:+TraceClassUnloading:跟踪类的卸载。
    -XX:+PrintClassHistogram:打印、查看系统中类的分布情况。

    1.3 系统参数查看

    -XX:+PrintVMOptions:在运行时,打印虚拟机接收到命令行显示参数。
    -XX:+PrintCommandLineFlags:打印传递给虚拟机的显式和隐式参数,隐式参数未必是通过命令行直接给出的,它可能是由虚拟机启动时自行设置的。
    -XX:+PrintFlagsFinal:打印所有的系统参数的值。

    2 堆参数配置

    2.1 最大堆和初始堆的设置

    -Xmx,-Xms:分别表示最大堆空间和初始堆空间大小。
    在实际工作中,可以直接将初始堆和最大堆空间设置相等,这样做可以减少垃圾回收次数,提高程序性能。

    2.2 新生代

    -Xmn:可以用于设置新生代的大小。新生代的大小会直接影响到老年代的大小,这个参数堆系统性能以及GC行为由很大的影响。新生代的大小一般设置为整个堆空间的1/3到1/4左右。
    -XX:SurvivorRatio:用来设置新生代中eden空间和from/to空间的比例关系。

    2.3 堆溢出处理

    在Java程序运行的过程中,如果堆空间不足,则有可能抛出内存溢出错误(out of memory)简称为OOM。
    -XX:+HeapDumpOnOutOfMemoryError:在内存溢出时导出整个堆信息。
    -XX:+HeapDumpPath:指定堆的存放路径。

    3 非堆内存的参数配置

    -XX:MaxMetaspaceSize:指定元空间的最大可用值。
    -Xss:指定线程的栈大小。
    -XX:MaxDirectMemorySize:最大可用直接内存,如不设置,默认值为最大堆空间。直接内存的溢出依然会引起系统的OOM。

    4 虚拟机工作模式:Client和Server

    -client和-server:分别指定虚拟机使用Client模式和Server模式。

    相关文章

      网友评论

          本文标题:深入理解java虚拟机——常用虚拟机参数

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