文章目录

  • JVM参数类型大揭秘
    • JVM的参数类型
      • 标准参数
      • X参数
      • XX参数
        • -Xmx -Xms
    • 运行时JVM参数查看
      • 参数:
      • jps
      • jinfo
    • jstat查看虚拟机统计信息
      • 类装载
      • 垃圾收集
      • JIT编译
    • jmap+MAT实战内存溢出
      • JVM内存结构
      • 查看线上堆内存溢出以及非堆内存溢出
        • 发送内存溢出的主要原因

JVM参数类型大揭秘

JVM的参数类型

标准参数

在各个版本的JVM中基本保持不变,相对稳定

  • -help

  • -server -client

  • -version -showversion

  • -cp -classpath

X参数

非标准参数,在各个版本的JVM中可能会变,但是变化较小

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

默认混合模式

设置为解释模式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SwYsLJlV-1585792192843)(C:\Users\sunmingzhi\AppData\Roaming\Typora\typora-user-images\1585728229372.png)]

设成编译模式

XX参数

  • 特点:

    • 非标准化参数化
    • 相对不稳定
    • 主要用于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类型是key,value形式存在,中间用等号。

-Xmx -Xms

一个是设置最大内存,一个是设置最小内存

  • 不是X参数,而是XX参数

    • –Xms等价于-XX:InitialHeapSize
    • -Xmx等价于-XX:MaxHeapSize
    • -Xss等价于-XX:ThreadStackSize

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

    • 查看运行后的进程,最大的堆大小值: jinfo -flag MaxHeapSize 33333
    • 查看现场的堆栈大小: jinfo -flag ThreadStackSize 33333
  • 默认情况不做修改的话,堆栈其中的一个线程就有1024k,这线程应该还是比较大的。我们在调优的时候还是会把这个值调小一些。

运行时JVM参数查看

参数:

  • -XX:+PrintFlagsInitial(查看初始值)

  • -XX:+PrinFlagsFinal(查看最终值)

=表示默认值

:=被用户或者JVM修改后

  • -XX:+UnlockExperimentalVMOptions(解锁实验参数)

  • -XX:+UnlockDiagnosticVMOptions(解锁诊断参数)

  • -XX:+PrintCommandLineFlags(打印命令行参数)

jps

  • 类似Linux系统中的pa,也就是用来查看系统进程的,不过是专门用来查看java的进程

  • 使用指南

jinfo

  • 查看一个正在运行的JVM的参数值

  • 查看tomcat的最大内存值:首先得知命令,然后找到对应的pid

jstat查看虚拟机统计信息

在垃圾回收这块十分有用,可以清楚的看到内存结构里每一块的大小是如何进行变化的

类装载

jstat -class 3176 1000 10

后面1000表示每隔1000ms,10表示一共输出10次

  • -class

    • Loaded:类装载的个数
    • Bytes:装载的kBs数
    • Unloaded:卸载的个数
    • Bytes:卸载的kBs数
    • Time:所花费的装载和卸载的时间

垃圾收集

命令:-gc 、-gcutil、-gccause、-gcnew、-gcold

  • -gc

    • S0C、S1C、S0U、S1U:S0和S1的总量与使用量
    • EC、EU:Eden区总量与使用量
    • OC、OU:Old区总量与使用量
    • MC、MU:Metaspace区总量与使用量
    • CCSC、CCSU:压缩类空间总量与使用量
    • YGC、YGCT:YoungGC的次数与时间
    • FGC、FGCT:FullGC的次数与时间
    • GCT:总的GC时间

JIT编译

命令:-compiler、-printcompilation

  • -compiler

    • Compiled:表示完成了多少个编译任务
    • Failed:表示失败的编译任务个数
    • Invalid:表示无效的编译任务
    • Time:执行编译任务所花的时间。
    • FailedType:上次失败编译的编译类型。
    • FailedMethod:上次编译失败的类名和方法。

jmap+MAT实战内存溢出

JVM内存结构

  • JVM的内存结构分为两个大块,

    • 堆区

      • Young

        • Survivor

          • S0
          • S1
        • Eden
      • Old

    • 非堆区:属于我们操作系统的本地内存,独立于我们堆区以外。在JDK8中叫Metaspace

查看线上堆内存溢出以及非堆内存溢出

发送内存溢出的主要原因
  • 内存泄漏

    • 导出内存映像文件

      • 内存溢出自动导出

        • -XX:+HeapDumpOnOutOfMemoryError
        • -XX:HeapDumpPath=./
        • 第一个参数表示:当发生内存溢出的时候,将内存溢出文件Dump出来。
        • 第二个参数表示:Dump出来的文件存放的目录。
      • 使用jmap命令手动导出
        发送内存溢出的主要原因
  • 内存泄漏

    • 导出内存映像文件

      • 内存溢出自动导出

        • -XX:+HeapDumpOnOutOfMemoryError
        • -XX:HeapDumpPath=./
        • 第一个参数表示:当发生内存溢出的时候,将内存溢出文件Dump出来。
        • 第二个参数表示:Dump出来的文件存放的目录。
      • 使用jmap命令手动导出
  • 内存分配不足

JVM参数类型大揭秘相关推荐

  1. Java面试之JVM参数调优

    JVM参数调优 前言 你说你做过JVM调优和参数配置,请问如何盘点查看JVM系统默认值 使用jps和jinfo进行查看 -Xms:初始堆空间 -Xmx:堆最大值 -Xss:栈空间 -Xms 和 -Xm ...

  2. 正确配置JVM参数-附JVM参数详解

    一.内存配置参数 1.参数详解 JVM参数类型 标准参数(-) 所有的JVM实现都必须实现这些参数的功能,而且向后兼容. 非标准参数(-X) 默认jvm实现这些参数的功能,但是并不保证所有jvm实现都 ...

  3. 秒懂JVM的三大参数类型,就靠这十个小实验了

    来源 | 悟空聊架构(ID:PassJava666) 本实验的目的是讲解 JVM 的三大参数类型.在JVM调优中用到的最多的 XX 参数,而如何去查看和设置 JVM 的 XX 参数也是调优的基本功,本 ...

  4. 如何开启jvm日志_做了10个小实验:搞懂了JVM三大参数类型

    本实验的目的是讲解 JVM 的三大参数类型.在JVM调优中用到的最多的 XX 参数,而如何去查看和设置 JVM 的 XX 参数也是调优的基本功,本节以实验的方式讲解 JVM 参数的查看和设置.希望大家 ...

  5. 不同类型的开放获取大揭秘

    了解开放获取:不同类型的开放获取大揭秘 2021-02-05  分类: SCI期刊与投稿 阅读(3) 收藏 开放获取是确保研究被广泛的读者阅读和使用的最有效的方法之一.不受限制地分享论文和数据有助于建 ...

  6. 大促在即,拥有亿级流量的电商平台开发了一个订单系统,我们应该如何来预估其并发量?如何根据并发量来合理配置JVM参数呢?

    1. 需求分析 大促在即,拥有亿级流量的电商平台开发了一个订单系统,我们应该如何来预估其并发量?如何根据并发量来合理配置JVM参数呢? 假设,现在有一个场景,一个电商平台,比如京东,需要承担每天上亿的 ...

  7. JVM参数 KV设值类型

    JVM参数 KV设值类型 查询有没有设值步骤: jps -l jinfo -flag MetaspaceSize 进程号 在idea中设置值在查询

  8. JVM参数调优基础-参数的类型详解

    1 参数类型 1.1 标准参数 -help -server -client -version -showversion -cp -classpath 1.2 X 参数 非标准化参数 -Xint :解释 ...

  9. autolisp获取目录服务器信息失败,大神们,帮忙看看这个代码哪儿有问题?老是出现“参数类型错误:...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 defun c:ZHDGX() (claim) (command "layer" "m" "dgxj&q ...

最新文章

  1. 启用Visual Studio 对jQuery的智能感知
  2. java中的与运算符
  3. 本地目录+Eclipse+Webstorm当SVN配置库服务器更换-客户端设置方式
  4. c vs java_c++ vs java---之一
  5. java使用gridview,网格控件GridView在Android中的使用
  6. java 构造 statict_java学习:构造方法、static、final
  7. 低功耗无线模块超远距离无线传输实现中继的方法
  8. java collections_扫盲java.util.Collections工具包,学习排序、二分、洗牌、旋转算法
  9. HBase架构设计及原理分析
  10. android获取服务器时间格式,Android 获取服务器与客户端时差的实例代码
  11. VIVADO常见警告、错误及解决方法
  12. 第一个IOS APP总结
  13. DL实战(3):cfNet- Matlab配置
  14. c语言程序设计 ncre,全国计算机二级C语言程序设计题((100%全中必过).doc
  15. 【LwM2M】LwM2M协议官方文档
  16. HDU4556_欧拉函数求解法拉数列
  17. CPU 和 GPU - 异构计算的演进与发展
  18. IE浏览器确定兼容性模式
  19. 相信积累的力量——《把时间当作朋友》读后感
  20. To My Little Princess

热门文章

  1. cron 晚上十一点半 和十点半
  2. 漫画:疫情期间的真实写照!你带口罩了嘛?你是绿码?.....
  3. C段查询雏形之在Java中反查一个IP上的所有域名(旁站查询)
  4. python3 urllib3和urllib,python3的urllib3和requests及问题解决
  5. stable-diffusion-webui手动安装详细步骤(AMD显卡)
  6. 【车载以太网】【组织】最详国际标准组织与标准介绍
  7. 共享车位停车数据 共享停车管理平台,共享车位解决停车问题!
  8. 企业中台最佳实践--阿里中台建设方法论(三)
  9. opencv联合dlib视频人脸识别例子
  10. 【微信小程序】预览视频