[JVM教程与调优] 什么是JVM运行时参数?

我们接着上一章节[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运行时参数?的更多相关文章
- [JVM教程与调优] 了解JVM 堆内存溢出以及非堆内存溢出
在上一章中我们介绍了JVM运行时参数以及jstat指令相关内容:[JVM教程与调优] 什么是JVM运行时参数?.下面我们来介绍一下jmap+MAT内存溢出. 首先我们来介绍一下下JVM的内存结构. J ...
- [JVM教程与调优] JVM都有哪些参数类型?
JDK本身是提供了一些监控工具,有一些是命令行,也有图形界面.本次介绍命令行如何进行监控. 命令行是非常重要的,因为在我们生产环境基本上是没有图形界面的,完全是通过命令行. 主要内容: JVM的参数类 ...
- <JVM下篇:性能监控与调优篇>04-JVM运行时参数
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...
- Java系列笔记(4) - JVM监控与调优
目录 参数设置收集器搭配启动内存分配监控工具和方法调优方法调优实例 光说不练假把式,学习Java GC机制的目的是为了实用,也就是为了在JVM出现问题时分析原因并解决之.通过学习,我觉得JVM ...
- JVM监控与调优
目录 参数设置收集器搭配启动内存分配监控工具和方法调优方法调优实例 转:http://www.cnblogs.com/zhguang/p/java-jvm-gc.html光说不练假把式,学习J ...
- [java] JVM监控与调优
原文出处:http://www.cnblogs.com/zhguang/p/java-jvm-gc.html 光说不练假把式,学习Java GC机制的目的是为了实用,也就是为了在JVM出现问题时分 ...
- Tomcat性能调优-JVM监控与调优
参数设置 在Java虚拟机的参数中,有3种表示方法用"ps -ef |grep "java"命令,可以得到当前Java进程的所有启动参数和配置参数: 标准参数(-),所有 ...
- JVM监控和调优常用命令工具总结
JVM监控和调优 在Java应用和服务出现莫名的卡顿.CPU飙升等问题时总是要分析一下对应进程的JVM状态以定位问题和解决问题并作出相应的优化,在这过程中Java自带的一些状态监控命令和图形化工具就非 ...
- 一份 Tomcat 和 JVM 的性能调优经验总结!拿走不谢
Tomcat性能调优 找到Tomcat根目录下的conf目录,修改server.xml文件的内容.对于这部分的调优,我所了解到的就是无非设置一下Tomcat服务器的最大并发数和Tomcat初始化时创建 ...
随机推荐
- cssy元素居中的方法有哪些?
css的元素居中 各位小伙伴们在努力写网页的时候有没有遇到过这样的一个问题呢? 在写的时候发现他不居中,可是要分分钟逼死强迫症的啊! 别急,我来啦 哈哈哈 今天就带来三种css的元素居中的方法 第一种 ...
- Web渗透基础小总结
Web渗透框架概述 主要组成: 1. web语言代码(脚本) 2. web程序 3. 数据库程序 Web语言常见几大类 1. HTML:超文本标记语言,标准通用编辑语言下的一个应用 2. PHP:超文 ...
- Java程序员考研失败后的面试经历,oppo、VIVO、等面经
温馨提示:有些可能会遗漏个别问题,都是最近一周的面试,有点忘了. 浪潮(一面挂) 你是网络工程的?对网络很了解? 解释一下什么是广播域 怎么划分子网 说一下CSS的几种分类器 数据库中有哪些聚集函 ...
- 并查集(不相交集)的Remove操作
给并查集(不相交集)的添加一个\(Remove(X)\)操作,该操作把\(X\)从当前的集合中除去并把它放到自己的集合中. 实现思想 英文原句 We assume that the tree is i ...
- LeetCode 33,在不满足二分的数组内使用二分的方法
本文始发于个人公众号:TechFlow,原创不易,求个关注 链接 Search in Rotated Sorted Array 难度 Medium 描述 给定一个升序排列的数组,它被分成两部分之后交换 ...
- 必备技能三、render渲染函数
Vue 推荐使用在绝大多数情况下使用 template 来创建你的 HTML.然而在一些场景中,你真的需要 JavaScript 的完全编程的能力,这就是 render 函数,它比 template ...
- JS中的reduce()详解
reduce()作为一个循环使用.接收四个参数:初始值(上一次返回值),当前元素值,当前元素下标,原数组. 应用 作为累加器使用 var a=[4,5,6,7,8] //item代表一次回调的值 初 ...
- R时间序列分析实例
一.作业要求 自选时间序列完成时间序列的建模过程,要求序列的长度>=100. 报告要求以下几部分内容: 数据的描述:数据来源.期间.数据的定义.数据长度. 作时间序列图并进行简单评价. 进行时间 ...
- 前端要了解的seo
一.搜索引擎工作原理 当我们在输入框中输入关键词,点击搜索或查询时,然后得到结果.深究其背后的故事,搜索引擎做了很多事情. 在搜索引擎网站,比如百度,在其后台有一个非常庞大的数据库,里面存储了海量的关 ...
- Go 武林外传 - 初出茅庐
没有旁白. 我叫小白, 白痴的白. 老头说我太笨了, 提前放我下山, 让我自生自灭. 对了, 忘了说了, 那老头是我师傅. 虽然我的内心深处是拒绝的, 但是我又打不过老头, 只好收拾铺盖滚犊子了. 算 ...