JVM调优和参数配置
1.JVM垃圾回收的时候如何确定垃圾?是否知道什么是GC Roots
答:什么是垃圾:简单的说就是内存中已经不再被使用到的空间就是垃圾
要进行垃圾回收,如何判断一个对象是否可以被回收?
1引用计数法
2枚举根节点做可达性分析(根搜索路径)
基本思路就是通过一系列名为“GC Roots”的对象作为起点,从这个被称为GC Roots的对象开始向下搜索,如果一个对象到GC Roots没有任何引用链相连时,则说明此对象不可用。也即单个元素的队列。
给定一个集合的引用作为根出发,通过引用关系遍历对象图,能被遍历到的(可到达的)对象就被判定为存活;没有被遍历到的就自然被判定为死亡。
java中可以作为GC Roots的对象:
虚拟机栈(栈帧中的局部变量区,也叫做局部变量表)中引用的对象。
方法区中的类静态属性引用的对象。
方法区中常量引用对象。
本地方法栈中JNI(Native方法)引用的对象。
2.JVM调优和参数配置,请问如何盘点查看JVM系统默认值。
答:Xms Xms和Xmx最好要调成一致 避免GC平凡的收集忽高忽低 -Xms 等价于 -XX:InitialHeapSize 初始化的堆内存
-Xmx 等价于 -XX:MaxHeapSize 初始化的堆内存
Xmx:堆空间
Xss:初始栈空间
JVM的参数类型:标配参数
-version 微森、-help 耗破、java-showversion
X参数(了解)
-Xint 解释执行
-Xcomp 第一次使用就编译成本地代码
-Xmixed 混合模式
*XX参数
Boolean类型
公试: -XX:+或者 - 某个属性值
+表示开启
-表示关闭
Case:是否打印GC收集细节
-XX:-PrintGCDetails
-XX:+PrintGCDetails
是否使用串行垃圾回收器
-XX:-UseSerialGC
-XX:+UseSerialGC
KV设值类型
公试:-XX:属性key=属性值value
Case: -XX:MetaspaceSize=128m 21M 元空间
-XX:MaxTenuringThreshold=15
jps:查看进程编号 -l
jinfo举例,如何查看当前运行程序的配置
jinfo -flag MetaspaceSize 4300
题外话(坑题):两个经典参数:-Xms和-Xmx
这个你如何 解释:-Xms 等价于 -xx:InitialHeapSize 初始化的堆内存
-Xmx 等价于 -XX:MaxHeapSize 初始化的堆内存
第一种,查看参数盘点家底
jps -l
jinfo -flag 具体参数 java进程编号
jinfo -flags java进程编号
jinfo -flags PrintGCDetails 13344
第二种,查看参数盘点家底 佛拉歌s 因尼踢奥
查看JVM默认值:-XX:+PrintFlagsInitial
主持要查看初始默认
公式 java -XX:+PrintFlagsInitial -version
java -XX:+PrintFlagsInitial
主要查看修改更新
-XX:+PrintFlagsFinal no
java -XX:+PrintFlagsFinal -version
java -XX:+PrintFlagsFinal
打印命令行参数
克梦按的 赖恩
-XX:+PrintCommandLineFlags
java -XX:+PrintCommandLineFlags -version
方法区
可通过-XX:PermSize和-XX:MaxPermSize来指定最小值和最大值。
常用参数配置:
-Xms128m -Xmx4096m -Xss1024k -XX:MetaspaceSize=512m -XX:+PrintCommandLineFlags -XX:+PrintGCDetails -XX:+UseSerialGC
3.你平时工作用过的JVM常用基本配置参数有哪些?
答:常用参数 -Xms:初始大小内存,默认为物理内存1/64
等价于 -XX:InitialHeapSize
-Xmx:最大分配内存,默认为物理内存1/4
等价于 -XX:MaxHeapSize
-Xss:设置单个线程栈的大小,一般默认为512K - 1024K
等价于:-XX:ThreadStackSize ThreadStackSize=0如果是0用的就是系统出厂默认值。
-Xmn:设置年轻代
-XX:MetaspaceSize :设置元空间大小 默认20多M 美特思贝思
元空间的本质和永久代类似,都是对JVM规范中方法区的实现。
不过元空间与永久代之间最大的区别在于:
元空间并不在虚拟机中,而是使用本地内存
因此,默认情况下,元空间的大小仅受本地内存限制
-Mms10m -Xmx10m -XX:MetaspaceSize=1024m -XX:+PrintFlagsFinal
-Mms128m -Xmx4096m -Xss1024m -XX:MetaspaceSize=512m -XX:+PrintCommandLineFlags -XX:+PrintGCDetails -XX:+UseSerialGC
*-XX:+PrintGCDetails 低特奥思
输出详细GC收集日志信息
规律:
GC
【GC类型 GC前新生代内存占用->GC后内存占用 新生代总大小 GC前JVM堆内存占用->GC后JVM堆内存使用 JVM堆总大小 GC耗时 用户耗时 系统耗时 实际耗时】
FullGC
-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相同
-XX:NewRatio
配置年轻代与老年代在堆结构的占比
默认
-XX:NewRatio=2新生代占1,老年代2,年轻代占整个堆的1/3
假如
-XX:NewRatio=4新生代占1,老年代4,年轻代占整个堆的1/5
NewRatio值就是设置老年代的占比,剩下的1给新生代
-XX:MaxTenuringThreshold
设置垃圾最大年龄
查看默认进入老年代年龄:
jinfo -flag MaxTenuringThreshold 17344(进程编号)
-XX:MaxTenuringThreshold=15
-XX:MaxTenuringThreshold=0:设置垃圾最大年龄。如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代。对于年老代比较多的应用,可以提高效率。
如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象再年轻代的存活时间,增加在年轻代即被回收的概论。
JVM调优和参数配置相关推荐
- JVM调优常用参数配置
2019独角兽企业重金招聘Python工程师标准>>> 堆配置 -Xms:初始堆大小 -Xms:最大堆大小 -XX:NewSize=n:设置年轻代大小 -XX:NewRatio=n: ...
- JVM调优之参数配置: -Xms -Xmx -Xmn -XX:+PrintGCDetails -XX:UseSerialGC -XX:SurvivorRadio -XX:NewRadio
JVM提供了诸多的参数进行JVM各个方面内存大小的设置,为Java应用进行优化提供了诸多的工具,本文将会详细分析各个参数的功能与使用. 1.常见参数说明: -Xms: //堆内存初始化大小 -Xmx: ...
- JVM的进阶学习(GC Roots、JVM调优与参数配置、)
1. GC Roots,可达性分析 从GC roots的对象作为起始点,从GC Roots对象开始向下搜索,如果一个对象到GCRoots没有任何引用链相连,则说明对象不可用.即给定一个集合的引用作为根 ...
- java面试-JVM调优和参数配置
JVM的参数类型: 1.标配参数: java -version java -help 2.X参数: -Xmixed 混合模式 -Xint 解释执行 -Xcomp 第一次使用就编译成本地代码 3.XX ...
- JVM调优的基本配置参数
目录 Java中可以作为GC Roots的对象有哪些 JVM调优 JVM常用的基本配置参数有哪些 什么是GC Roots 因为确立垃圾的方法有引用记数法,但是会产生循环引用,所以引出了另一种方法叫可达 ...
- JVM调优及参数设置
(1)参数 -Xms:初始堆大小 -Xmx :最大堆大小 此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存 -Xmn :年轻代大小 整个堆大小=年轻代大小 + 年老代大小 + 持 ...
- JVM调优-GC参数
一.Throughput收集器(吞吐量) -XX:+UseParallelGC -XX:+UseParallelOldGC *参数调整:通过调整堆大小,减少GC停顿时间,增大吞吐量 增强堆大小可以减少 ...
- 大数据培训:Spark性能调优与参数配置
Spark性能调优-基础篇 众所周知,正确的参数配置对提升Spark的使用效率具有极大助力,帮助相关数据开发.分析人员更高效地使用Spark进行离线批处理和SQL报表分析等作业. 推荐参数配置模板如下 ...
- Mysql性能调优常用参数配置
全文中一共有常用的(事实上你如果花1-2周阅读.理解.自己动手设一下后是需要这么多参数的)76个参数 可能你从未看到过这样的一篇集中火力式的把mysql参数列了这么全的文章.因此这一篇是汇集了最精华和 ...
最新文章
- python 函数 日期区间_python-如何获取两个日期之间的日期
- 用Python和OpenCV创建一个图片搜索引擎的完整指南
- 介绍一下XMLHttpRequest对象,他有哪些常用方法和属性
- python使用指南(part1)--去重
- ipv4转换ipv6工具_IPv4与IPv6的区别,不仅仅是地址变长而已
- 数据结构与算法python语言描述答案_《数据结构与算法Python语言描述》习题第二章第一题(python版)...
- [设想]增加比较的多元运算符
- Knowledge Distillation(知识蒸馏)Review--20篇paper回顾
- gps测量与数据处理第三版pdf_测量培训需要掌握哪些知识点呢?_东英时代何老师...
- oracle隐含参数 开库,Oracle数据库隐含参数介绍
- jQuery的实用特性扩展类库:jQuery++
- 英伟达驱动更新记录_手把手教你如何通过NVIDIA(英伟达显卡)官网及时更新升级显卡驱动程序版本-网络教程与技术
-亦是美网络...
- 【案例教程不讲废话】Cisco Packet Tracer 思科教程(精+简之快速掌握)一:组建小型局域网
- Kubernetes — 监控方案
- linux下动态库的符号冲突、隐藏和强制优先使用库内符号
- 防火墙和代理服务器之间有什么区别
- 2022-2028全球粉尘检测仪行业调研及趋势分析报告
- C语言 删除单链表中值为e的全部元素
- 【pandas】变形(长宽表变换)
- 计算机辅助教育课件有哪些类型,多媒体计算机辅助教学 (2).ppt
热门文章
- SQL执行顺序的优先级
- 基于Android的计步器(Pedometer)的讲解(二)——柱状图分析2
- STEMA (STEM 能力测试) 考 试 白 皮 书--scratch编程部分例子试题及实现
- 读《人类简史 我们人类这些年》亚特伍德 著
- 2021平安金服1年前端经验社招 面试问题全记录(已入职)
- 在c语言中 反斜杠符是,[转载]C语言中反斜杠的使用
- 队列的入队、出队操作
- 如何将PyCharm的语言设置为中文?
- 蓝桥真题 2019_3_数列求解
- sysClkRateGet();返回系统时钟每秒的tick数量, tick详解!