查看JVM参数
如何查看一个正在运行中的java程序,它的某个jvm参数是否开启?具体值是多少?
jps
jinfo
jvm的参数类型:
1.标配参数:java -version ,java -help , java -showversion
2.X参数(了解): java -Xint (解释执行), java -Xcomp(第一次使用就编译成本地代码),-Xmixed (混合模式)
3.XX参数:
3.1 Boolean类型 ,公式:-XX:+或者-某个属性值,其中+表示开启,-表示关闭
例子:是否打印GC收集细节,是否使用串行垃圾回收器
public class HelloGC {
public static void main(String[ ]args) throws InterruptedException {
System.out.println("***********helloGC");
Thread.sleep(Integer.MAX_VALUE);
}
}
结果见下图:

可以进行修改


3.2 KV设值类型,默认元空间大小

默认多少极限年龄可以升养老区

两个经典参数:-Xms 和-Xmx
-Xms 等价于:-XX:InitialHeapSize
-Xmx 等价于:-XX:MaxHeapSize
-Xss 设置单个线程栈的大小,一般默认为512k~1024k,等价于 -XX:ThreadStackSize
-Xms128m -Xmx4096m -Xss1024k -XX:MetaspaceSize=512m -XX:+PrintCommandLineFlags
-XX:+PrintGCDetails -XX:+UseSerialGC
第一种,查看参数盘点家底
jps
jinfo -flag 具体参数 java进程编号
jinfo -flags java进程编号
第二种,查看参数盘点家底
java -XX:+PrintFlagsInitial 这个是初始的
java -XX:+PrintFlagsFinal 这个是修改以后的 =表示没有改过 :=表示人为修改或者jvm修改过的 公式:java -XX:+PrintFlagsFinal -version
java -XX:+PrintCommandLineFlags 也是可以查看初始参数

public class MemDemo {
public static void main(String[ ] args) {
long maxMemory = Runtime.getRuntime().maxMemory();
long totalMemory = Runtime.getRuntime().totalMemory();
System.out.println("-Xmx 最大分配内存 "+(maxMemory/(double)1024/1024)+"MB");
System.out.println("-Xms 初始分配内存 "+(totalMemory/(double)1024/1024)+"MB");
}
}
运行结果见下图:

OOM异常例子:
public class HelloGC {
public static void main(String[ ]args) throws InterruptedException {
System.out.println("***********helloGC");
//创建50m大小空间,实际调整为10m
byte[] bytes= new byte[50*1024*1024];
}
}


日志分析总结:
1.GC前后的对比。
2.新生代占堆内存三分之一,老年代占堆内存三分之二,老年代回收不了将抛oom异常。
常用基础参数SurvivorRatio
-XX:SurvivorRatio 设置新生代中eden和S0/S1空间的比例,默认
-XX:SurvivorRatio=8, Eden:S0:S1=8:1:1
假如
-XX:SurvivorRatio=4, Eden:S0:S1=4:1:1
SurvivorRatio值就是设置eden区的比例占多少,S0/S1相同
public class HelloGC {
public static void main(String[ ]args) throws InterruptedException {
System.out.println("***********helloGC");
//byte[] bytes= new byte[50*1024*1024];
}
}
默认状态:8:1:1


加参数后:4:1:1


常用基础参数NewRatio
-XX:NewRatio
配置年轻代与老年代在堆结构的占比
-XX:NewRatio=2新生代占1,老年代2,年轻代占整个堆的1/3
假如
-XX:NewRatio=4新生代占1,老年代4,年轻代占整个堆的1/5
NewRatio值就是设置老年代的占比,剩下的1给新生代
用法跟上图配置一样。
查看JVM参数的更多相关文章
- 【java】之查看JVM参数的值
查看JVM参数的值 可以根据java自带的jinfo命令: jinfo -flags pid 使用jmap可以查看某个Java进程中每个对象有多少个实例,占用多少内存,命令格式:jmap -histo ...
- JVM系列第12讲:JVM参数之查看JVM参数
今天要说的是如何查看 JVM 中已经设置的参数,包括显示参数和隐式参数. 打印显式参数 -XX:+PrintVMOptions 该参数表示程序运行时,打印虚拟机接受到的命令行显式参数.我们用下面的命令 ...
- JDK工具(查看JVM参数、内存使用情况及分析等)
在JDK的bin目录下有很多命令行工具: 我们可以看到各个工具的体积基本上都稳定在27kb左右,这个不是JDK开发团队刻意为之的,而是因为这些工具大多数是jdk\lib\tools.jar类库的一 ...
- Java虚拟机学习 - 查看JVM参数及值的命令行工具(6)
查看JVM各个参数值方式 1. HotSpot vm中的各个globals.hpp文件 查看jvm初始的默认值及参数 globals.hpp globals_extension.hpp c1_glo ...
- 查看 JVM 参数的默认值
查看初始默认值:-XX:+PrintFlagsInitial HuandeMacBook-Air:~ huanliu$ java -XX:+PrintFlagsInitial [Global flag ...
- weblogic基本目录介绍,位数查看,启动与发布项目,修改JVM参数,设置项目为默认项目
这里的基本目录%base%表示安装目录,如我的目录为:E:/weblogic就是%base% 1.weblogic目录介绍 weblogic主要的目录介绍: 1.日志目录: 每个domain(域)都有 ...
- JVM探秘:jinfo查看JVM运行时参数
本系列笔记主要基于<深入理解Java虚拟机:JVM高级特性与最佳实践 第2版>,是这本书的读书笔记. 如何查看JVM运行时参数,对于线上JVM调优是很关键的,因为只有知道了当前使用的JVM ...
- JVM基础系列第14讲:JVM参数之GC日志配置
说到 Java 虚拟机,不得不提的就是 Java 虚拟机的 GC(Garbage Collection)日志.而对于 GC 日志,我们不仅要学会看懂,而且要学会如何设置对应的 GC 日志参数.今天就让 ...
- JVM基础系列第13讲:JVM参数之追踪类信息
我们都知道 JVM 在启动的时候会去加载类信息,那么我们怎么得知他加载了哪些类,又卸载了哪些类呢?我们这一节就来介绍四个 JVM 参数,使用它们我们就可以清晰地知道 JVM 的类加载信息. 为了方便演 ...
随机推荐
- python面向对象之三大特性
继承 先看个简单的例子了解一下继承. class Animal: # 父类 def __init__(self, name, age, department): self.name = name se ...
- CSS 实现单行及多行文字省略
单行文字省略 很多时候不确定字数限制,但换行可能影响整体设计,这个时候常用就是文字省略加全文字提示了 .dom{ text-overflow: ellipsis; overflow: hidden; ...
- Vue打包文件放在服务器,浏览器存在缓存问题的解决
在入口文件index.html添加 <meta http-equiv="pragram" content="no-cache"> <meta ...
- P1011 圆柱体的表面积
题目描述 输入底面半径 \(r\) 和高 \(h\) ,输出圆柱体的表面积,保留 \(3\) 位小数. 输入格式 输入包含两个实数 \(r,h(1 \le r,h \le 1000)\) 且保证输入的 ...
- Roslyn 使用 Directory.Build.props 管理多个项目配置
在一些大项目需要很多独立的仓库来做,每个仓库之间都会有很多相同的配置,本文告诉大家如何通过 Directory.Build.props 管理多个项目配置 在我的 MVVM 框架需要三个不同的库,一个是 ...
- CentOS服务器安装mysql
1.配置YUM源 下载mysql源安装包 [root@localhost~]#wget http://dev.mysql.com/get/mysql57-community-release-el7-8 ...
- vue-learning:18 - js - watch
watch watch可以监听data和computed中值的变化. watch在实例对象作用域中可以监听实例对象的数据,即var vm = new Vue(options)时作为配置对象属性传入.监 ...
- 【37.48%】【hdu 2587】How far away ?(3篇文章,3种做法,LCA之Tarjan算法)
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s) ...
- 微软软件开发技术二十年回顾-API篇(转)
二. API篇 随着Windows操作系统开始占据主导地位,开发Windows平台下的应用程序成为人们的需要.当然,这也为传统的DOS程序员提供了一种新的编程方法-一种不受设备限制并由事件驱动的编程方 ...
- 2018宁夏邀请赛 L Continuous Intervals(单调栈+线段树)
2018宁夏邀请赛 L Continuous Intervals(单调栈+线段树) 传送门:https://nanti.jisuanke.com/t/41296 题意: 给一个数列A 问在数列A中有多 ...