• [JVM教程与调优] JVM都有哪些参数类型?


    JVM都有哪些参数类型?

    JDK本身是提供了一些监控工具,有一些是命令行,也有图形界面。本次介绍命令行如何进行监控。
    命令行是非常重要的,因为在我们生产环境基本上是没有图形界面的,完全是通过命令行。

    主要内容:

    • JVM的参数类型
    • 运行时JVM参数查看
    • jstat查看虚拟机统计信息
    • jmap+MAT实战内存溢出
    • jstack实战死循环与死锁

    JVM参数类型

    那么都有哪些JVM参数类型呢?一共分为三大类

    • 标准参数
    • X参数
    • XX参数

    标准参数

    1.-help
    2.-server -client
    3.-version -showversion
    4.-cp -classpath

    标准参数,在各个版本的JVM里面中,基本保持不变。相对比较稳定
    例如:java -help
    标准参数 java -help

    X参数

    • 非标准参数

    也就是说在各个版本的JVM中可能会变,但是变化的也比较小。

    1.-Xint:解释执行
    2.-Xcomp:第一次使用就编译成本地代码
    3.-Xmixed:混合模式,JVM自己来决定是否编译成本地代码

    举例:

    默认混合模式

    设置成解释模式

    设置成编译模式

    但是我们这块X参数平时用的并不多,用的更多而是后面这块XX参数。

    XX参数

    这块参数用的是非常多,相信许多同学在网上会经常看到XX参数来设置JVM。我们先来看下它都有什么特点。
    特点:

    • 非标准化参数化
    • 相对不稳定
    • 主要用于JVM调优和Debug

    分类

    主要分为两大类

    • Boolean类型

    格式:-XX:[+-]表示启用或者禁用name属性。其中+号表示启用该参数,-号表示禁用该参数。

    比如:

    -XX:+UseConcMarkSweepGC
    

    表示启用了CMS垃圾收集器

    -XX:+UseG1GC
    

    表示启用了G1垃圾收集器

    • 非Boolean类型

    格式:-XX:=表示name属性的值是value,主要是以key,value形式存在。

    比如:

    -XX:MaxGCPauseMillis=500
    
    

    表示GC最大的停顿时间是500ms。

    -XX:GCTimeRatio=19
    
    

    表示GCTimeRatio等于19。

    小结

    以上先简单了解一下分为两大类:Boolean 与 非Boolean类型。Boolean是带有+-号,而非Boolean类型是key,value形式存在,中间用等号。

    -Xmx -Xms

    这两个参数,相信许多小伙伴们都见过。这两个参数分别是一个设置最大内存,一个设置最小内存。

    • 不是X参数,而是XX参数
      1.-Xms等价于-XX:InitialHeapSize
      2.-Xmx等价于-XX:MaxHeapSize
      3.-Xss等价于-XX:ThreadStackSize

    InitialHeapSize初始堆的大小。MaxHeapSize最大的堆大小。ThreadStackSize线程堆栈大小

    可以先简单查看下运行后的进程,最大的堆大小值。
    最大的堆大小

    查看一下线程的堆栈大小。

    线程堆栈大小

    可以看到这块的线程堆栈大小有1024k,默认情况不做修改的话,堆栈其中的一个线程就有1024k,这线程应该还是比较大的。我们在调优的时候还是会把这个值调小一些。

    这次就先介绍到这里,下一章讲介绍如何查看JVM运行时参数

    推荐

    文末

    文章收录至
    Github: https://github.com/CoderMerlin/coder-programming
    Gitee: https://gitee.com/573059382/coder-programming
    欢迎关注并star~

    微信公众号

  • 相关阅读:
    sizeof in C
    Get WIFI SSID and BSSID
    Swift和C混合Socket编程实现简单的ping命令&主机发现
    The different of bit Compiler
    Get all Ethernet information in Swift
    Get Local IP Address in Swift
    编译Unity3D Mono 加密DLL 填坑记
    spring-quartz 项目启动后执行一次job 之后按照规定时间执行job
    通过反射获取SSM的controller层的注解以及注解中的value值
    网页中高亮选中的关键字
  • 原文地址:https://www.cnblogs.com/coder-programming/p/12601570.html
Copyright © 2020-2023  润新知