JVM运行参数
一、三种参数类型
1、标准参数:比较稳定,以后版本会保留
-help
-version
2、-X参数(非标准参数)
-Xint
-Xcomp
3、-XX参数(非标准参数,使用率较高)
-XX:newSize
-XX:+UseSerialGC
二、标准参数
一般都是很稳定的,在未来jvm版本中不会改变,可以使用java -help检索出所有的标准参数。
三、-X参数
非标准选项,如有更改,恕不另行通知。
使用java -X检索出-X的参数。
-Xint,-Xcomp,-Xmixed
-Xint会强制JVM执行所有的字节码,会降低运行速度,通常低10倍或更多。
-Xcomp与-Xint相反,会把所有的字节码编译成本地代码。
-Xmixed是混合模式,是JVM的默认模式,推荐。
四、-XX参数
主要用于JVM的调优和debug操作。有两种,boolean类型和非boolean类型。
boolean类型
格式:-XX:[+-]<name> 表示启用或禁用<name>属性。
如:-XX:+DisableExplicitGC 表示禁止用手动调用gc操作,也就是System.gc()无效。
非boolean类型
格式:-XX:<name>=<value> 表示<name>属性的值为<value>。
如:-XX:NewRatio=1表示新生代和老年代的比值。
-Xms 与 -Xmx参数
-Xms512m:等价于-XX:InitialHeapSize=512m,设置初始堆内存为512M。
-Xmx2048m:等价于-XX:MaxHeapSize=2048m,设置最大堆内存为2048M。
五、查看jvm的运行参数
1、运行java命令时打印参数
添加参数-XX:+PrintFlagsFinal。
2、查看正在运行的jvm参数
查看所有java进程:jps -l。
查看某进程的jvm参数:jinfo -flags ${pid} / jinfo -flag <参数名> ${pid}。
六、jvm的内存模型
1、jdk1.7的堆内存模型

Young年轻代
Tenured老年代
Perm永久代
2、jdk1.8的堆内存模型

Young年轻代
Tenured老年代
元空间(占用系统内存)
3、查看堆内存使用情况
jstat命令可以查看堆内存各部分的使用量,以及加载类的数量。
jstat [-命令选项] [进程id] [间隔时间/毫秒] [查询次数]
例1:查看class加载统计
C:\Users\lenovo>jstat -class 11976
Loaded Bytes Unloaded Bytes Time
4730 9436.1 0 0.0 10.54
说明:
loaded:加载class的数量
bytes:所占用空间大小
unloaded:未加载占用空间
time:时间
例2:查看编译统计
C:\Users\lenovo>jstat -compiler 11976
Compiled Failed Invalid Time FailedType FailedMethod
2970 0 0 13.28 0
说明:
compiled:编译数量
failed:失败数量
invalid:不可用数量
time:时间
failedType:失败类型
failedMethod:失败的方法
例3:垃圾回收统计
jstat -gc 11976
S0C S1C S0U S1U EC EU OC
24576.0 25600.0 0.0 0.0 206336.0 54242.5 59392.0
OU MC MU CCSC CCSU YGC YGCT FGC
27371.7 27096.0 26635.1 3200.0 3028.4 17 0.210 2
FGCT GCT
0.160 0.370
说明:
S0C:第一个survivor区的大小(kb)
S1C:第二个survivor区的大小(kb)
S0U:第一个survivor区的使用大小(kb)
S1U:第二个survivor区的使用大小(kb)
EC:Eden区的大小 (kb)
EU:Eden区的使用大小 (kb)
OC:Old区的大小 (kb)
OU:Old区的使用大小 (kb)
MC:方法区的大小 (kb)
MU:方法区的使用大小 (kb)
CCSC:压缩类空间大小(kb)
CCSU:压缩类空间使用大小(kb)
YGC:年轻代垃圾回收次数
YGCT:年轻代垃圾回收消耗时间
FGC:老年代垃圾回收次数
FGCT:老年代垃圾回收消耗时间
GCT:垃圾回收消耗总时间
七、jmap的使用以及内存溢出分析
1、查看内存使用情况
jmap -heap 11976

2、查看内存中对象数量及大小
查看所有对象,包括活跃及非活跃:jmap -histo ${pid} | more
查看活跃对象:jmap -histo:live ${pid} | more

JVM运行参数的更多相关文章
- IntelliJ IDEA设置JVM运行参数
2015十一月 28 原 IntelliJ IDEA设置JVM运行参数 分类:JavaSE (11566) (1) 打开 IDEA 安装目录,看到有一个 bin 目录,其中有两个 vmoptions ...
- idea设置JVM运行参数
对JVM运行参数进行修改是JVM性能调优的重要手段,下面介绍在应用程序开发过程中JVM参数设置的几种方式. 方式一 java程序运行时指定 -Dproperty=value 该参数通常用于设置系统级全 ...
- 【转】idea设置JVM运行参数
对JVM运行参数进行修改是JVM性能调优的重要手段,下面介绍在应用程序开发过程中JVM参数设置的几种方式. 方式一 java程序运行时指定 -Dproperty=value 该参数通常用于设置系统级全 ...
- JVM 运行参数 & 代码监控
1.Java代码监控 JDK提供java.lang.management包, 其实就是基于JMX技术规范,提供一套完整的MBean,动态获取JVM的运行时数据,达到监控JVM性能的目的. packag ...
- IntelliJ IDEA和Eclipse设置JVM运行参数
打开 IDEA 安装目录,看到有一个 bin 目录,其中有两个 vmoptions 文件,需针对不同的JDK进行配置: 32 位:idea.exe.vmoptions64 位:idea64.exe.v ...
- JVM运行参数优化详细教程
获取设置的参数str的值: 常用的-X参数有以下这些: 手动调用GC执行垃圾回收操作:(-XX:+DisableExplicitGC 手动调用将会失效) 查看tomcat的进程ID: 或者:
- IntelliJ IDEA之如何设置JVM运行参数
步骤一: 点击IDEA右上角的 Edit Configurations 设置参数: -XX:+PrintGCDetails -Xmx128M -Xms128M 步骤二:在VM options中设置参数 ...
- JVM运行时数据区内容简述
JVM运行时数据区分为五个部分:程序计数器.虚拟机栈.本地方法栈.堆.方法区.如下图所示,五部分其中又分为线程共享区域和线程私有区域,下面将分别介绍每一部分. 1. PC程序计数器 程序计数器是一块较 ...
- jvm相关参数
官方地址:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jstat.html#BEHHGFAE 一.查看jvm运行参数 1.查看 ...
- 查看JVM运行时参数
1.查看JVM运行时参数 -XX:+PrintFlagsInitial -XX:PrintFlagsFinal -XX:+UnlockExperimentalVMOptions 解锁实验参数 -XX: ...
随机推荐
- 知乎 微软当年的 J++ 究竟是什么?为什么 Sun 要告它? zz
https://www.zhihu.com/question/22814456 考个古
- pycharm选择conda虚拟环境出错:python的SDK无效
检查项如下: 0.安装了python,并在系统环境变量中配置了python 0.5 正确配置了conda的系统环境变量 1.安装conda的文件夹又读写权限(不需要管理员模式运行也能进行读写) 直接在 ...
- 【网站搭建】开源社区Flarum搭建记录
环境 服务器系统:腾讯云 OpenCloudOS 宝塔版本:免费版8.0.1 Nginx:1.24.0 MySQL:5.7.42 PHP:8.1.21 萌狼蓝天 2023年8月7日 PHP设置 1.安 ...
- 【Python】【Pandas】将符合条件行的某列数值改为负数
萌狼蓝天情景还原: 支付宝/微信导出的账单,不管支出还是收入都是正数. 我想把支出的金额改成负数,其他不变就这样. 解决办法 这里用到的是pandas.apply e--下面的写法虽然比较麻烦,但是 ...
- 如何在 Ubuntu 20.04 上安装 MySQL
https://dev.mysql.com/downloads/mysql/ 简介: MySQL是最流行的开源关系数据库管理系统.它速度快,容易使用,容易扩展,并且流行的LAMP和LEMP的一部分. ...
- tar/zip命令加密压缩
回到顶部 场景 Centos6下使用加密压缩,可以从A机器到B机器解压. 可用在kali上解压就不行. 回到顶部 命令 解包 tar zxvf FileName.tar 打包 tar czvf Fil ...
- Netty中ByteBuf内存泄露及释放解析
近日在使用Netty框架开发程序中出现了内存泄露的问题,百度加调试了一番,做个整理. 直接看解决方法请移步Netty内存泄漏解决ERROR io.netty.util.ResourceLeakDete ...
- URL中文转换成类似%E6%96%97%E7%A0%B4(url编码)格式
要将汉字转换成编码格式拼接成请求,没怎么搞过,一番查找,最终确定使用C# 里的WebUtility using System.Net; var a = WebUtility.UrlEncode(&qu ...
- uniapp请求封装-token无感刷新
当前是vue3+ts版本的封装 vue3+js版本请求封装可参考 https://www.cnblogs.com/lovejielive/p/14343619.html token无感刷新,可自行删除 ...
- 『AutoHotkey』 效率提升「脚本集」
AutoHotkey 效率提升脚本集 一些实用的 AutoHotkey 脚本示例,这些可以显著提升工作效率. #Requires AutoHotkey v2.0 ; 1. 快速启动常用程序 ^!n:: ...