JVM参数类型大揭秘
文章目录
- 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
- Survivor
- Old
- Young
非堆区:属于我们操作系统的本地内存,独立于我们堆区以外。在JDK8中叫Metaspace
查看线上堆内存溢出以及非堆内存溢出
发送内存溢出的主要原因
内存泄漏
- 导出内存映像文件
- 内存溢出自动导出
- -XX:+HeapDumpOnOutOfMemoryError
- -XX:HeapDumpPath=./
- 第一个参数表示:当发生内存溢出的时候,将内存溢出文件Dump出来。
- 第二个参数表示:Dump出来的文件存放的目录。
- 使用jmap命令手动导出
发送内存溢出的主要原因
- 内存溢出自动导出
- 导出内存映像文件
内存泄漏
- 导出内存映像文件
- 内存溢出自动导出
- -XX:+HeapDumpOnOutOfMemoryError
- -XX:HeapDumpPath=./
- 第一个参数表示:当发生内存溢出的时候,将内存溢出文件Dump出来。
- 第二个参数表示:Dump出来的文件存放的目录。
- 使用jmap命令手动导出
- 内存溢出自动导出
- 导出内存映像文件
内存分配不足
JVM参数类型大揭秘相关推荐
- Java面试之JVM参数调优
JVM参数调优 前言 你说你做过JVM调优和参数配置,请问如何盘点查看JVM系统默认值 使用jps和jinfo进行查看 -Xms:初始堆空间 -Xmx:堆最大值 -Xss:栈空间 -Xms 和 -Xm ...
- 正确配置JVM参数-附JVM参数详解
一.内存配置参数 1.参数详解 JVM参数类型 标准参数(-) 所有的JVM实现都必须实现这些参数的功能,而且向后兼容. 非标准参数(-X) 默认jvm实现这些参数的功能,但是并不保证所有jvm实现都 ...
- 秒懂JVM的三大参数类型,就靠这十个小实验了
来源 | 悟空聊架构(ID:PassJava666) 本实验的目的是讲解 JVM 的三大参数类型.在JVM调优中用到的最多的 XX 参数,而如何去查看和设置 JVM 的 XX 参数也是调优的基本功,本 ...
- 如何开启jvm日志_做了10个小实验:搞懂了JVM三大参数类型
本实验的目的是讲解 JVM 的三大参数类型.在JVM调优中用到的最多的 XX 参数,而如何去查看和设置 JVM 的 XX 参数也是调优的基本功,本节以实验的方式讲解 JVM 参数的查看和设置.希望大家 ...
- 不同类型的开放获取大揭秘
了解开放获取:不同类型的开放获取大揭秘 2021-02-05 分类: SCI期刊与投稿 阅读(3) 收藏 开放获取是确保研究被广泛的读者阅读和使用的最有效的方法之一.不受限制地分享论文和数据有助于建 ...
- 大促在即,拥有亿级流量的电商平台开发了一个订单系统,我们应该如何来预估其并发量?如何根据并发量来合理配置JVM参数呢?
1. 需求分析 大促在即,拥有亿级流量的电商平台开发了一个订单系统,我们应该如何来预估其并发量?如何根据并发量来合理配置JVM参数呢? 假设,现在有一个场景,一个电商平台,比如京东,需要承担每天上亿的 ...
- JVM参数 KV设值类型
JVM参数 KV设值类型 查询有没有设值步骤: jps -l jinfo -flag MetaspaceSize 进程号 在idea中设置值在查询
- JVM参数调优基础-参数的类型详解
1 参数类型 1.1 标准参数 -help -server -client -version -showversion -cp -classpath 1.2 X 参数 非标准化参数 -Xint :解释 ...
- autolisp获取目录服务器信息失败,大神们,帮忙看看这个代码哪儿有问题?老是出现“参数类型错误:...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 defun c:ZHDGX() (claim) (command "layer" "m" "dgxj&q ...
最新文章
- 启用Visual Studio 对jQuery的智能感知
- java中的与运算符
- 本地目录+Eclipse+Webstorm当SVN配置库服务器更换-客户端设置方式
- c vs java_c++ vs java---之一
- java使用gridview,网格控件GridView在Android中的使用
- java 构造 statict_java学习:构造方法、static、final
- 低功耗无线模块超远距离无线传输实现中继的方法
- java collections_扫盲java.util.Collections工具包,学习排序、二分、洗牌、旋转算法
- HBase架构设计及原理分析
- android获取服务器时间格式,Android 获取服务器与客户端时差的实例代码
- VIVADO常见警告、错误及解决方法
- 第一个IOS APP总结
- DL实战(3):cfNet- Matlab配置
- c语言程序设计 ncre,全国计算机二级C语言程序设计题((100%全中必过).doc
- 【LwM2M】LwM2M协议官方文档
- HDU4556_欧拉函数求解法拉数列
- CPU 和 GPU - 异构计算的演进与发展
- IE浏览器确定兼容性模式
- 相信积累的力量——《把时间当作朋友》读后感
- To My Little Princess
热门文章
- cron 晚上十一点半 和十点半
- 漫画:疫情期间的真实写照!你带口罩了嘛?你是绿码?.....
- C段查询雏形之在Java中反查一个IP上的所有域名(旁站查询)
- python3 urllib3和urllib,python3的urllib3和requests及问题解决
- stable-diffusion-webui手动安装详细步骤(AMD显卡)
- 【车载以太网】【组织】最详国际标准组织与标准介绍
- 共享车位停车数据 共享停车管理平台,共享车位解决停车问题!
- 企业中台最佳实践--阿里中台建设方法论(三)
- opencv联合dlib视频人脸识别例子
- 【微信小程序】预览视频