我们接着上一章节[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. 一月七笔千万美元投资!国内VR行业在刮什么风?

    虽然直到现在仍然没有一款真正能够彻底普及并改变大众操控方式的虚拟现实设备出现,但其已经被认定是未来人类社会中不可或缺的重要组成部分和工作.生活.娱乐.休闲载体.而虚拟现实设备.内容在今年年初CES展会 ...

  2. HTTP协议 有这篇文章足够了

    HTTP 协议详解 HTTP(HyperText Transfer Protocol)超文本传输协议.其最初的设计目的是为了提供一种发布和接收HTML页面的方法. HTTP是一个客户端(用户)和服务端 ...

  3. python数组和字符串互相转换

    字符串转数组 str = '1,2,3' arr = str.split(',') 数组转字符串 arr = ['a','b'] str = ','.join(arr) arr = [1,2,3] s ...

  4. js中的内置方法的兼容写法

    1.如果浏览器不支持every属性,every的实现原理 if(Array.prototype.every===undefined){ Array.prototype.every=function(f ...

  5. 峰哥说技术:01-Spring Boot介绍

    Spring Boot深度课程系列 峰哥说技术—2020庚子年重磅推出.战胜病毒.我们在行动 Spring Boot介绍 A.Spring Boot是什么? 由于Spring是一个轻量级的企业开发框架 ...

  6. Element-UI饿了么时间组件控件按月份周日期,开始时间结束时间范围限制参数

    在日常开发中,我们会遇到一些情况,在使用Element-UI 限制用户的日期时间范围的选择控制(例如:查询消息开始和结束时间,需要限制不能选择今天之后的时间). 看了网上的一些文档,零零散散.各式各样 ...

  7. vue项目打包后打开空白解决办法

    1.记得改一下config下面的index.js中bulid模块导出的路径.因为index.html里边的内容都是通过script标签引入的,而你的路径不对,打开肯定是空白的.先看一下默认的路径. a ...

  8. Web安全相关(一):CSRF/XSRF(跨站请求伪造)和XSS(跨站脚本)

    XSS(Cross Site Script):跨站脚本,也就是javascript脚本注入,一般在站点中的富文本框,里面发表文章,留言等表单,这种表单一般是写入数据库,然后再某个页面打开. 防御: 1 ...

  9. 三维GIS引擎地图可视化渲染方案设计

    1.GIS地图可视化流程 GIS地图可视化就是将空间数据转化为地图数据再进行交互处理的方法,下图一展示了地图可视化的可编程渲染的典型管道,原始空间数据必须处理为图形API支持基础图元用以地图渲染.下图 ...

  10. AJAX轮询的实时监控画面

    上一篇我们通过异步刷新Ajax 技术,来实现监控页面监控位号值的刷新,采用Ajax (Asynchronous Javascript And XML)技术,是指一种创建交互式.快速动态网页应用的网页开 ...