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

年轻代内存大小相关设置

-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内存配置参数的更多相关文章

  1. jvm内存配置参数

    请看下面题目: 对于jvm内存配置参数: -Xmx10240m -Xms10240m -Xmn5120m -XXSurvivorRatio=3 其最小内存值和Survior区总大小分别是: a. 51 ...

  2. JVM内存配置参数-XMX,-XMS,-XMN的例子

    转载:http://www.nowcoder.com/questionTerminal/093bfa948d144ce3b0a68b938ae8b4ec 对于JVM内存配置参数: -Xmx10240m ...

  3. 对于JVM内存配置参数

    -Xmx:最大堆大小 -Xms:初始堆大小 -Xmn:年轻代大小 -XXSurvivorRatio:年轻代中Eden区与Survivor区的大小比值 年轻代5120m, Eden:Survivor=3 ...

  4. JBOSS最大连接数配置和jvm内存配置

    一.调整JBOSS最大连接数. 配置deploy/jboss-web.deployer/server.xml文件 .       <Connector         port="80 ...

  5. webstorm增加内存配置参数

    webstorm增加内存配置参数 找到WebStorm.exe.vmoptions这个文件,路径如下 webstorm安装主目录>bin>WebStorm.exe.vmoptions 更改 ...

  6. Docker——Tomcat JVM 内存配置

    前言 安装再docker中的tomcat,在下载大文件或者某些情况下,会出现tomcat的内存溢出等情况,所以需要配置tomcat的内存大小,docker中的tomcat内存大小配置有四种方式. 一. ...

  7. JVM内存配置详解

    前段时间在一个项目的性能测试中又发生了一次OOM(Out of swap sapce),情形和以前网店版的那次差不多,比上次更奇怪的是,此次搞了几天之后啥都没调整系统就自动好了,死活没法再重现之前的O ...

  8. JVM内存配置

    JVM内存主要分为两个部分,分别是PermanentSapce和HeapSpace. PermantSpace主要负责存放加载的Class类级对象如class本身,method,field等反射对象, ...

  9. 谈一谈JVM内存JAVA_OPTS参数

    最近几个月,做的性能测试项目中,发现了一些内存方面的问题,其中有涉及到对JBOSS里的JAVA_OPTS配置,例如一下所示: JAVA_OPTS="-server -Xms1536m -Xm ...

随机推荐

  1. 面试15--strcmp,strcpy,memmove实现

    一. strcmp strcmp是用于比较两个字符串的大小的.   int strcmp( const char *string1, const char *string2 ) char *strin ...

  2. Mac 无法安装安装psutil 报错 error: command '/usr/bin/clang' failed with exit status 1

    psutil是一个特别好用来检查系统资源的一个包, 但是 在Mac安装却总是报错 查看监控系统脚本, 点这里 mac系统版本: Macos Mojave 10.14.3 报错信息如下: WARNING ...

  3. SQL进阶-索引设置&sql优化

    一.索引设置 1.索引的设置原则 经常出现在WHERE条件.关联条件中的字段作为索引字段: 在满足查询需求的前提下,应尽可能少的创建索引:(对于一个组合索引,可以满足以组合索引左边的一部分字段的查询需 ...

  4. 【POJ1416】Shredding Company

    本题传送门 本题知识点:深度优先搜索 + 回溯 本题题意很简单,就是有一条位数不超过6的数字纸条,问你怎么剪这纸条,使得得到的纸条的值的总和最接近目标值(总和不能超过目标值). 比如第一个样例 50 ...

  5. sysmain服务怎么启动 & Win7 SuperFetch无法启动

    在控制面板/管理工具/服务中,只需找到Superfetch这个服务,双击,然后将其启动类型改为自动,并点击启动按钮并确定即可. Superfetch无法启动,系统找不到指定档案 ms-windows ...

  6. GIT-本地仓库

    用户配置 git config --global user.name "name" git config --global user.email "123@qq.com& ...

  7. linux下使用clamav排查病毒

    clamav wget http://www.clamav.net/downloads/production/clamav-0.102.0.tar.gz ### Installyum -y insta ...

  8. Xamarin.FormsShell基础教程(4)Shell项目内容列表页面运行效果

    Xamarin.FormsShell基础教程(4)Shell项目内容列表页面运行效果 在创建好Shell解决方案后,就可以运行程序了.本小节将讲解运行后的效果. 内容列表页面 运行程序,初始效果如图1 ...

  9. sumdoc t411 dir.txt

    C:\Users\zhoufeiyue\Documents\sumdoc t411\(9+条消息)redis Jedis存取list对象和map - shenjianxz的博客 - CSDN博客.mh ...

  10. springboot vue前后端分离 跨跨域配置

    public class CustomCorsFilter extends OncePerRequestFilter { @Override protected void doFilterIntern ...