JVM常用运行时参数说明
前言
仅列出常用JVM调优参数,更多请转文末的官方文档链接。
堆内存
-Xmx,设置最大堆内存,默认为物理内存的1/4。示例:-Xmx4096m,设置为4G-Xms,设置初始内存,默认为物理内存的1/64。此值可以和-Xmx相同,避免每次gc后JVM重新分配内存。-Xmn,设置年轻代堆内存,Sun官方推荐配置年轻代大小为整个堆的3/8。示例:-Xmn1536m-XX:SurvivorRatio,设置年轻代中Eden和Survivor区的比值,默认为8。示例:-XX:SurvivorRatio=8,Survivor区和Eden区的比值为8,survivor区占年轻代的1/9-XX:NewRatio,设置老年代和年轻代的比值,默认为2。Xms=Xmx并且设置了Xmn的情况下,该参数不需要进行设置。示例:-XX:NewRatio=4,年轻代和年老代的比值为4,年轻代占整个堆的1/5。-XX:MaxTenuringThreshold,设置垃圾最大年龄。最大值为15。对于并行收集器默认值为15,对于CMS收集器默认值为6。年龄较低时更容易从年轻代到年老代,对于年老代型应用能提高效率;较高时会增加对象在年轻代的存活时间,增加在年轻代就被回收的概率。
非堆内存
-XX:MetaspaceSize,设置元空间初始值。示例:-XX:MetaspaceSize=512M-XX:MaxMetaspaceSize,设置元空间最大值。示例:-XX:MaxMetaspaceSize=512M
线程栈内存
-Xss,设置线程栈内存,JDK5.0之前是256K,JDK5.0后每个线程大小为1M。线程栈内存大小会限制线程的数量,更小的线程栈会有更多的线程数。线程栈内存过大或者过小都会导致内存溢出。一般小的应用, 如果栈不是很深, 应该是128k够用的大的应用建议使用256k。示例:-Xss128k
GC收集器
-XX:+UseSerialGC,设置串行收集器。适用场景:内存小于100M;单核、单机程序,并且没有停顿时间的要求-XX:+UseConcMarkSweepGC,设置并发收集器,开启该参数后会自动将-XX:+UseParNewGC打开。即:ParNew(Young区)+ CMS(Old区)的组合。适用场景:多CPU、追求低停顿时间、快速响应-XX:+UseParallelGC,设置并行收集器。JVM默认的收集器。适用场景:多CPU、高吞吐量、允许停顿时间超过1秒-XX:+UseG1GC,设置G1收集器,适合多核大内存机器(至少6G堆内存),致力于解决串行收集器、并发收集器和CMS收集器的缺陷,官方推荐,性能高。
没有万能的收集器,只有适合的收集器。
辅助参数
-verbose:class,显示每个load classes的信息-verbose:gc,显示每次gc的简要信息。约等于-XX:+PrintGC-XX:+PrintGCDetails,打印每次gc的详细信息。-XX:+PrintGCTimeStamps,打印程序启动到GC发生的时间,搭配-XX:+PrintGCDetails使用-XX:+PrintGCDateStamps,打印GC发生时的时间戳,搭配-XX:+PrintGCDetails使用-XX:+PrintHeapAtGC,打印GC前后的堆信息-XX:+PrintGCApplicationStoppedTime,打印GC时线程的停顿时间-XX:+PrintTenuringDistribution,打印JVM在每次MinorGC后当前使用的Survivor中对象的年龄分布-Xloggc,指定gc日志文件的路径,适用该参数会自动激活-verbose:gc。示例:-Xloggc:/home/logs/gc.log-XX:+HeapDumpOnOutOfMemoryError:内存出现OOM时生成Heap转储文件-XX:HeapDumpPath:设置Heap转储文件的路径。示例:-XX:HeapDumpPath=/home/tmp/test.hprof
其它
-XX:+PrintFlagsInitial:打印所有XX选项的默认值-XX:+AggressiveOpts,加快编译,优化代码(Enables the use of aggressive performance optimization features)-XX:-UseBiasedLocking。启用偏向锁。默认是打开的。
参考
JVM常用运行时参数说明的更多相关文章
- JVM<一>----------运行时数据区域
参考:1.JVM Specification: http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html#jvms-2.5 2.< ...
- JVM入门——运行时数据区
这张图我相信基本上对JVM有点接触的都应该很熟悉,可以说这是JVM入门的第一课.其中的“堆”和“虚拟机栈(栈)”更是耳熟能详.下面将围绕这张图对JVM的运行时数据区做一个简单介绍. 程序计数器(Pro ...
- JVM学习-运行时数据区域
目录 前言 运行时数据区 程序计数器 Java虚拟机栈 局部变量表 基础数据类型 对象引用 returnAddress 操作数栈 动态链接 方法返回地址 Java堆 方法区 类型信息 字段描述符 方法 ...
- 深入理解JVM(2)——运行时数据区
1.运行时数据区 1.1.程序计数器 记录当前线程正在执行的字节码指令的地址,如果正在执行的是 Native 方法,这个计数器值则为空. 1.2.虚拟机栈 每个 Java 方法在执行的同时会创建一个栈 ...
- jvm理论-运行时数据区
三大流行jvm sun HotSpot ibm j9 BEA JRockit Oracle 会基于HotSpot整合 JRockit. jvm运行时数据区 java虚拟机所管理的内存将会包括以下几个运 ...
- java架构之路-(JVM优化与原理)JVM的运行时内存模型
还是我们上次的图,我们上次大概讲解了类加载子系统的执行过程,验证,准备,解析,初始化四个过程.还有我们的双亲委派机制. 我们这次来说一下运行时内存模型.上一段小代码. public class Mai ...
- JVM笔记-运行时内存区域划分
1. 概述 Java 虚拟机在执行 Java 程序的过程中会把它管理的内存划分为若干个不同的数据区域.它们各有用途,有些随着虚拟机进程的启动一直存在(堆.方法区),有些则随着用户线程的启动和结束而建立 ...
- JVM虚拟机-运行时数据区概述
目录 运行时数据区域 总览 概念扫盲 什么是栈帧(Stack Frame) JVM常见出现两种错误 程序计数器 虚拟机栈 结构 局部变量表 方法是如何调用的 本地方法栈 堆 浅堆和深堆 堆的细分 方法 ...
- JVM之运行时常量池(Runtime Constant Pool)
基本特性: 方法区的一部分,在方法去中分配,加载泪或者接口后就创建运行时常量区. class文件每一个类或接口的常量池表(constant_pool table)的运行时表现形式, 包括编译期的数值字 ...
- JVM之运行时数据区
Java虚拟机运行时数据区包括PC寄存器.Java虚拟机栈.Java堆.方法区.本地方法栈.运行时常量池六个部分. 1. PC寄存器 PC寄存器(又叫程序计数器,Program Counter Reg ...
随机推荐
- 2021-03-31:给定一个数组arr,给定一个值v。求子数组平均值小于等于v的最长子数组长度。
2021-03-31:给定一个数组arr,给定一个值v.求子数组平均值小于等于v的最长子数组长度. 福大大 答案2021-03-31: 这道题是昨天每日一题的变种.数组每个元素减v,然后求<=0 ...
- Selenium - 元素定位(1) - 八种元素定位
Selenium - 元素定位 八种元素定位 我们在做WEB自动化时,最根本的就是操作页面上的各种元素,而操作的基础便是元素的定位,只有准确地定位到唯一元素才能进行后续的自动化控制,下面将对各种元素定 ...
- IBM小型机 - 检测码:B150B10C,设备卡住不运行
检测码:B150B10C 问题 开机后,出现检测码:B150B10C,然后就卡在这里不动,无法进行下一步: 这里的错误码表示--机器的内存控制模块被deconfig(取消配置): 解决方法 登录cel ...
- Vue Element-ui 之 el-table自动滚动
首先是 div结构布局 <div id="scrollId">//对el-table盒子设置 id 属性 <div style="height: 100 ...
- 蓝桥杯真题 平面切分(Set自定义去重)
题目详情 资源限制 内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s 问题描述 平面上有 N 条直线,其中第 i 条直线是 y=Ai⋅ ...
- Deferred Components-实现Flutter运行时动态下发Dart代码 | 京东云技术团队
导读 Deferred Components,官方实现的Flutter代码动态下发的方案.本文主要介绍官方方案的实现细节,探索在国内环境下使用Deferred Components,并且实现了最小验证 ...
- Error: webpack.optimize.CommonsChunkPlugin has been removed
最近使用webpack 进行react 依赖抽离时发现原本的webpack.optimize.CommonsChunkPlugin已经不能使用了 打包时提示 Error: webpack.optimi ...
- 1.1. Java简介与安装
Java简介 Java是一种广泛使用的计算机编程语言,由James Gosling和他的团队在Sun Microsystems公司开发,于1995年首次发布.Java的设计理念是"一次编写, ...
- 7-9 《Fibonacci 数列》
7-9 <Fibonacci 数列> 思路:吃过前面<序列求和>问题的亏 但还是要尝试一下循环大法 Fn=Fn-1+Fn-2 定义int型 aFn-1 , bFn-2 , cF ...
- 【Python】sqlmodel: Python 数据库管理ORM 的终极形态?
ORM 大家都知道ORM(Object Relational Mapping)是一种将对象和关系数据库中的表进行映射的技术,它可以让开发者更加方便地操作数据库,而不用直接使用SQL语句. 直接使用SQ ...