我们接着上一章节[JVM教程与调优] JVM都有哪些参数类型?的内容继续讲解,这章我们来介绍一下:如何查看JVM运行时参数。这一点十分重要,因为我们在进行JVM参数调优的时候,我们首先得知道目前系统运行的值是什么,然后相应的根据相关参数进行调优。

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

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

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

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

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

PrinFlagsFinal

bool类型 属性名:UseG1GC 值:false

因此可以看出,并没有使用G1GC。

InitialHeapSize := 130023424

表示初始堆的值大小。

注意:

=表示默认值

:=被用户或者JVM修改后的值

演示一下

可以看到有非常多的参数。有兴趣的小伙伴可以自己试试。

那么刚才我们看到的参数是哪个进程的呢?

答案是:通过执行java -XX:+PrinFlagsFinal -version这个命令时的进程参数值。

如果我们要查看一个在运行时的JVM参数值,那么如何查看呢?这就是我们后面讲到的jinfo,在此之前,我们先来看一下·jps·。

jps

jps它就类似于Linux系统中的ps,也是用来查看系统进程的。不过它是专门用来查看java的进程。接下来我们来简单演示一下jps的使用

如何使用?

更多jps的适用参数命令,可以去这里查看

jinfo

那么我们如何去查看一个正在运行的JVM的参数值呢?

那么用jinfo就可以了。

再例如,我们如何查看tomcat的最大内存值是多少?那么我们首先得知道命令,然后找到对应的pid。

如图,其中23789就是tomcat的进程pid,查看对内存大小命令:MaxHeapSize

可以看到最大堆内存大小为268435456

可以看到我们手动赋值的参数,也可以看到默认有的参数值。

  • 查看最大内存

  • 查看垃圾回收器

jstat查看JVM统计信息

  • 类装载
  • 垃圾收集
  • JIT编译

垃圾回收这块非常有用,因为我们能够非常清楚的看到内存结构里面每一块的大小是如何进行变化的。

命令格式

options:-class,-compiler,-gc,-printcompilation

我们来查看一下jstat文档。

我们来介绍一下几个命令。

类装载

jstat -class 3176 1000 10

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

我们来看一下文档中是如何介绍-class命令。

分别表示什么含义呢?

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

垃圾收集

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

输入:jstat -gc 3176 1000 3

同样,后面表示每隔1000ms,一共打印输出3次

我们同样来看一下文档中的-gc的命令

我们来总结一下-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

我们来演示一下JIT编译。

这些都表示什么含义呢?我们来看一下我们的文档。

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

小伙伴可以结合一下上方的演示图案,来理解一下是什么含义。

大家了解一下就可以,实际工作中作用并不是很大。

以上都是以JDK1.8进行介绍。这里小伙伴们先简单了解一下这一块,后续再详细介绍。小伙伴们可以自己在电脑上尝试一下使用命令,观察一下打印结果。

关于JVM参数的命令,在文档中还有更多的详细介绍。感兴趣的小伙伴,可以自行去查看。

传送门:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jstat.html#BEHHGFAE

下一章,我们将来学习一下JVM的内存结构以及内存溢出。感兴趣的小伙伴,可以关注一下~

推荐

文末

文章收录至

Github: https://github.com/CoderMerlin/coder-programming

Gitee: https://gitee.com/573059382/coder-programming

欢迎关注并star~

[JVM教程与调优] 什么是JVM运行时参数?的更多相关文章

  1. [JVM教程与调优] 了解JVM 堆内存溢出以及非堆内存溢出

    在上一章中我们介绍了JVM运行时参数以及jstat指令相关内容:[JVM教程与调优] 什么是JVM运行时参数?.下面我们来介绍一下jmap+MAT内存溢出. 首先我们来介绍一下下JVM的内存结构. J ...

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

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

  3. <JVM下篇:性能监控与调优篇>04-JVM运行时参数

    笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...

  4. Java系列笔记(4) - JVM监控与调优

    目录 参数设置收集器搭配启动内存分配监控工具和方法调优方法调优实例     光说不练假把式,学习Java GC机制的目的是为了实用,也就是为了在JVM出现问题时分析原因并解决之.通过学习,我觉得JVM ...

  5. JVM监控与调优

    目录 参数设置收集器搭配启动内存分配监控工具和方法调优方法调优实例     转:http://www.cnblogs.com/zhguang/p/java-jvm-gc.html光说不练假把式,学习J ...

  6. [java] JVM监控与调优

    原文出处:http://www.cnblogs.com/zhguang/p/java-jvm-gc.html   光说不练假把式,学习Java GC机制的目的是为了实用,也就是为了在JVM出现问题时分 ...

  7. Tomcat性能调优-JVM监控与调优

    参数设置 在Java虚拟机的参数中,有3种表示方法用"ps -ef |grep "java"命令,可以得到当前Java进程的所有启动参数和配置参数: 标准参数(-),所有 ...

  8. JVM监控和调优常用命令工具总结

    JVM监控和调优 在Java应用和服务出现莫名的卡顿.CPU飙升等问题时总是要分析一下对应进程的JVM状态以定位问题和解决问题并作出相应的优化,在这过程中Java自带的一些状态监控命令和图形化工具就非 ...

  9. 一份 Tomcat 和 JVM 的性能调优经验总结!拿走不谢

    Tomcat性能调优 找到Tomcat根目录下的conf目录,修改server.xml文件的内容.对于这部分的调优,我所了解到的就是无非设置一下Tomcat服务器的最大并发数和Tomcat初始化时创建 ...

随机推荐

  1. 悖论当道,模式成空:汽车O2O真是死得其所?

    O2O热潮的兴起似乎来得颇为蹊跷--或许是线上连接线下的模式太过空泛,具有极大的包容性,让各个行业都忍不住在其中横插一脚.在经历过最初的崛起和后来的火爆之后,最终形成目前的寒冬.究其原因,O2O并不是 ...

  2. ubuntu 代理设置

    在学习工作中使用vagrant作为开发环境已经有很长一段时间了,使用ubuntu 作为开发系统 在使用中发现,即使修改了apt的source.list源文件,在面对一些开发中需要的软件工具的时候,不可 ...

  3. javascript中变量命名规则

    前言 变量的命名相对而言没有太多的技术含量,今天整理有关于变量命名相关的规则,主要是想告诉大家,虽然命名没有技术含量,但对于个人编码,或者说一个团队的再次开发及阅读是相当有用的.良好的书写规范可以让你 ...

  4. charles添加https支持

  5. ip修改成域名

    将ip修改成域名,这样的话可以使程序变得更加健壮,别人不能直接看见你的ip地址. 后来总结下分享给大家.首先找到hosts文件的位置,这个文件是系统dns默认查找的文件. windows 系统:C:\ ...

  6. 目标用户偏好指数Target Group Index分析

    目标用户偏好指数Target Group Index分析 TGI指数,全称Target Group Index,可以反映目标群体在特定研究范围内强势或者弱势. TGI指数计算公式 = 目标群体中具有某 ...

  7. 分布式系统一致性问题与Raft算法(下)

    上一篇讲述了什么是分布式一致性问题,以及它难在哪里,liveness和satefy问题,和FLP impossibility定理.有兴趣的童鞋可以看看分布式系统一致性问题与Raft算法(上). 这一节 ...

  8. Java基础--插入排序

    直接插入排序算法 (从后往前找到合适位置插入) 基本思想:每步将一个待排序的记录,按其顺序码大小插入到前面已经排序的子序列的合适位置(从后向前找到合适位置后),直到全部插入排序完为止. 例: 34,4 ...

  9. Ant-design-pro的动态菜单的实现

    页面效果: 如何实现: 1:分别建立SiderMenu和SubMenu组件 2.去and-desingn-vue的官方文档里copy单文件递归菜单的代码https://www.antdv.com/co ...

  10. java爬虫-妹子图

    一,分析 1.选择入口 ​ 打开 https://www.mzitu.com/ 主页,我们发现主页有200+页图片,我们如果从首页入手,这里可能不是全部图片.这里我们打开每日更新 https://ww ...