一定要记住的14个JVM内存配置参数
jvm setting的参数确实比较多(Oracle官网Java HotSpot VM Options),但是作为一名java开发者,那几个最常用最基本的参数设置和意义一定要死记和理解。这里推荐一个网站http://jvmmemory.com/在上面你可以方便的设置jvm的参数(当然这个网站上也是有些错误的,最可靠的还是去查下Oracle的文档)。
Notice:这里我们默认以Linux JAVA8 hotspot环境为例,其Oracle官网Java Platform, Standard Edition Tools Reference(这里面有详细参数配置说明)。
下面给出14个最常用和最基本的内存配置参数。
|
参数 |
等同于 |
|---|---|
|
-Xss1024k |
-XX:ThreadStackSize=1024k |
|
-Xms512m |
|
|
-Xmx1024m |
-XX:MaxHeapSize=1024m |
|
-Xmn512m |
|
|
-XX:NewSize=512m |
|
|
-XX:MaxNewSize=512m |
|
|
-XX:NewRatio=8 |
|
|
-XX:SurvivorRatio=32 |
|
|
-XX:MinHeapFreeRatio=40 |
|
|
-XX:MaxHeapFreeRatio=70 |
|
|
-XX:MetaspaceSize=128m |
|
|
-XX:MaxMetaspaceSize=256m |
首先我们来看看jvm内存模型结构,这里不详细叙述,我用一张图来让你过目不忘(jvisualvm visualGC插件,下图并非以上jvm参数设置,只是为了方便对jvm内存模型记忆)。当然了,这张图死磕也要永久记住的,有了他我们记忆以上几个参数不再是难事,时间久了也不会感觉陌生或者忘记。

一个重要的概念就是我们常常所说的设置jvm的内存参数大多关注的是堆内存的大小,你可以简单理解成这样:堆内存 = Old + Eden + S0 + S1 ;年轻的 = Eden(新生代) + S0 + S1 。
栈内存大小相关设置
-Xss1024k
- 意义: 设置线程栈占用内存大小。
- 默认值:不同的操作系统平台,其默认值不同,具体看官网说明。
堆内存大小相关设置
-Xms512m
- 意义: 设置堆内存初始值大小。
- 默认值:如果未设置,初始值将是老年代和年轻代分配制内存之和。
-Xmx1024m
- 意义: 设置堆内存最大值。
- 默认值:default value is chosen at runtime based on system configuration,具体请查看官网或者查看讨论How is the default Java heap size determined?。
年轻代内存大小相关设置
-Xmn512m
- 意义: 设置新生代的初始值及最大值。
- 默认值:堆内存的1/4(这里要记住不是最大堆内存,还是已经分配的堆内存的1/4)。
-XX:NewSize=512m
- 意义:设置新生代的初始值。
-XX:MaxNewSize=512m
- 意义:设置新生代的最大值。
比率方式设置
-XX:NewRatio=8
- 意义:设置老年代和年轻代的比例。比如:-XX:NewRatio=8 表示
老年代内存:年轻代内存=8:1 => 老年代占堆内存的8/9;年轻代占堆内存的1/9。 - 默认值:2 。
-XX:SurvivorRatio=32
- 意义:设置新生代和存活区的比例(这里需要注意的是存活区指的是其中一个)。比如:-XX:SurvivorRatio=8 表示
存活区:新生代=1:8 =》新生代占年轻代的8/10,每个存活区各占年轻代的1/10。 - 默认值:8 。
-XX:MinHeapFreeRatio=40
- 意义:GC后,如果发现空闲堆内存占到整个预估上限值的40%,则增大上限值。
- 默认值:40 。
-XX:MaxHeapFreeRatio=70
- 意义:GC后,如果发现空闲堆内存占到整个预估上限值的70%,则收缩预估上限值。
- 默认值:70。
Meta大小相关设置
-XX:MetaspaceSize=128m
- 意义:初始元空间大小,达到该值就会触发垃圾收集进行类型卸载,同时GC会对该值进行调整:如果释放了大量的空间,就适当降低该值;如果释放了很少的空间,那么在不超过MaxMetaspaceSize时,适当提高该值。
- 默认值:依赖平台。
-XX:MaxMetaspaceSize=256m
- 意义:设置元空间的最大值,默认是没有上限的,也就是说你的系统内存上限是多少它就是多少。
- 默认值:默认没有上限,在技术上,Metaspace的尺寸可以增长到交换空间。
以上就是14个参数,为了深刻理解,建议本地配置让后观察内存大小变化(可以使用jmap -heap pid 或者 visualGC来帮助观察)验证自己的理解是否正确。
一定要记住的14个JVM内存配置参数的更多相关文章
- jvm内存配置参数
请看下面题目: 对于jvm内存配置参数: -Xmx10240m -Xms10240m -Xmn5120m -XXSurvivorRatio=3 其最小内存值和Survior区总大小分别是: a. 51 ...
- JVM内存配置参数-XMX,-XMS,-XMN的例子
转载:http://www.nowcoder.com/questionTerminal/093bfa948d144ce3b0a68b938ae8b4ec 对于JVM内存配置参数: -Xmx10240m ...
- 对于JVM内存配置参数
-Xmx:最大堆大小 -Xms:初始堆大小 -Xmn:年轻代大小 -XXSurvivorRatio:年轻代中Eden区与Survivor区的大小比值 年轻代5120m, Eden:Survivor=3 ...
- JBOSS最大连接数配置和jvm内存配置
一.调整JBOSS最大连接数. 配置deploy/jboss-web.deployer/server.xml文件 . <Connector port="80 ...
- webstorm增加内存配置参数
webstorm增加内存配置参数 找到WebStorm.exe.vmoptions这个文件,路径如下 webstorm安装主目录>bin>WebStorm.exe.vmoptions 更改 ...
- Docker——Tomcat JVM 内存配置
前言 安装再docker中的tomcat,在下载大文件或者某些情况下,会出现tomcat的内存溢出等情况,所以需要配置tomcat的内存大小,docker中的tomcat内存大小配置有四种方式. 一. ...
- JVM内存配置详解
前段时间在一个项目的性能测试中又发生了一次OOM(Out of swap sapce),情形和以前网店版的那次差不多,比上次更奇怪的是,此次搞了几天之后啥都没调整系统就自动好了,死活没法再重现之前的O ...
- JVM内存配置
JVM内存主要分为两个部分,分别是PermanentSapce和HeapSpace. PermantSpace主要负责存放加载的Class类级对象如class本身,method,field等反射对象, ...
- 谈一谈JVM内存JAVA_OPTS参数
最近几个月,做的性能测试项目中,发现了一些内存方面的问题,其中有涉及到对JBOSS里的JAVA_OPTS配置,例如一下所示: JAVA_OPTS="-server -Xms1536m -Xm ...
随机推荐
- [Algorithm] 387. First Unique Character in a String
Given a string, find the first non-repeating character in it and return it's index. If it doesn't ex ...
- 在WinDbg中显示和搜索std::vector内容
WinDbg从来都不擅长可视化.尽管Visual Studio一直都有autoexp.dat,而且最近还出现了本机调试器可视化工具,但WinDbg用户不得不满足于转储内存区域和搜索内存来识别模式.另一 ...
- nodegui 使用react开发跨平台应用试用
nodegui官方团队提供了基于react 应用开发方式,同时我们集成官方的packer 进行快速的应用打包 项目说明 项目使用了官方的计算机应用,我使用官方的react starter,同时添加了p ...
- [SDOI2019]热闹又尴尬的聚会 构造,贪心
[SDOI2019]热闹又尴尬的聚会 链接 luogu loj 思路 第一问贪心?的从小到大删除入度最小的点,入度是动态的,打个标记. 当然不是最大独立集. 第二问第一问的顺序选独立集,不行就不要.选 ...
- bzoj3073: [Pa2011]Journeys 线段树优化建图
bzoj3073: [Pa2011]Journeys 链接 BZOJ 思路 区间和区间连边.如何线段树优化建图. 和单点连区间类似的,我们新建一个点,区间->新点->区间. 又转化成了单点 ...
- 中国大学生计算机系统与程序设计竞赛 CCF-CCSP-2016 选座( ticket_chooser )
选座( ticket_chooser ) 不会正解,欢迎讨论 //60分 #include<cstdio> #define max(a,b) (a)>(b)?a:b #define ...
- 【luoguP3000】 [USACO10DEC]牛的健美操Cow Calisthenics
题目链接 二分答案,判断需要断几条边,用\(f[i]\)表示以\(i\)为根的子树断边后的最长路径,对于一个点\(u\),存在\(f[v]>mid\)时就删到\(v\)的边\(f[v1]+f[v ...
- modis数据处理的坑(MOD02,mod03,mod04,MCD19A2)
一直以来处理modis产品都是用的 modis conversion toolkit(MCTK),用 IDL 来跑感觉好像也没什么问题,好像并没有去验证结果到底对不对,因为用的气溶胶数据 MOD04_ ...
- Centos7 更改yum源与更新系统
[1] 首先备份 /etc/yum.repos.d/CentOS-Base.repo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/Cen ...
- limma 包
limma:Linear Models for Microarray and RNA-Seq Data http://www.bioconductor.org/packages/release/bio ...