JVM优化之 -Xss -Xms -Xmx -Xmn 参数设置

摘要:
Xmn、Xms、Xmx和Xs是JVM内存配置参数。我们可以根据不同的需要修改这些参数,以实现运行程序的最佳效果-Xms堆内存的初始大小默认为物理内存的最大大小1/64 Xmx堆内存,默认为物理存储器的新一代的大小1/4-Xmn堆。旧一代的大小也可以通过以下值获得:-Xmx减去-Xmn Xss设置每个线程可以使用的内存大小,即堆栈大小。除了这些配置,JVM还有很多配置,通常使用如下:1.堆设置-Xms:初始堆大小-Xmx:最大堆大小-Xmn:新一代大小-XX:NewRatio:设置新一代与旧一代的比率。

Xmn Xms Xmx Xss有什么区别?
Xmn、Xms、Xmx、Xss都是JVM对内存的配置参数,我们可以根据不同需要区修改这些参数,以达到运行程序的最好效果。

-Xms 堆内存的初始大小,默认为物理内存的1/64
-Xmx 堆内存的最大大小,默认为物理内存的1/4
-Xmn 堆内新生代的大小。通过这个值也可以得到老生代的大小:-Xmx减去-Xmn

-Xss 设置每个线程可使用的内存大小,即栈的大小。在相同物理内存下,减小这个值能生成更多的线程,当然操作系统对一个进程内的线程数还是有限制的,不能无限生成。线程栈的大小是个双刃剑,如果设置过小,可能会出现栈溢出,特别是在该线程内有递归、大的循环时出现溢出的可能性更大,如果该值设置过大,就有影响到创建栈的数量,如果是多线程的应用,就会出现内存溢出的错误。除了这些配置,JVM还有非常多的配置,常用的如下:

1. 堆设置
-Xms:初始堆大小
-Xmx:最大堆大小
-Xmn:新生代大小
-XX:NewRatio:设置新生代和老年代的比值。
       如:为3,表示年轻代与老年代比值为1:3
-XX:SurvivorRatio:新生代中Eden区与两个Survivor区的比值。注意Survivor区有两个。
       如:为3,表示Eden:Survivor=3:2,一个Survivor区占整个新生代的1/5
-XX:MaxTenuringThreshold:设置转入老年代的存活次数。如果是0,则直接跳过新生代进入老年代
-XX:PermSize、-XX:MaxPermSize:分别设置永久代最小大小与最大大小(Java8以前)
-XX:MetaspaceSize、-XX:MaxMetaspaceSize:分别设置元空间最小大小与最大大小(Java8以后)

2. 收集器设置
-XX:+UseSerialGC:设置串行收集器
-XX:+UseParallelGC:设置并行收集器
-XX:+UseParalledlOldGC:设置并行老年代收集器
-XX:+UseConcMarkSweepGC:设置并发收集器

3. 垃圾回收统计信息
-XX:+PrintGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-Xloggc:filename

4. 并行收集器设置
-XX:ParallelGCThreads=n:设置并行收集器收集时使用的CPU数。并行收集线程数。
-XX:MaxGCPauseMillis=n:设置并行收集最大暂停时间
-XX:GCTimeRatio=n:设置垃圾回收时间占程序运行时间的百分比。公式为1/(1+n)

5. 并发收集器设置
-XX:+CMSIncrementalMode:设置为增量模式。适用于单CPU情况。
-XX:ParallelGCThreads=n:设置并发收集器新生代收集方式为并行收集时,使用的CPU数。并行收集线程数。

各区域分配比例
新生代 ( Young ) 与老年代 ( Old ) 的比例的值为 1:2 ( 该值可以通过参数 –XX:NewRatio 来指定 )
默认的,Eden : from : to = 8 : 1 : 1 ( 可以通过参数 –XX:SurvivorRatio 来设定 ),即: Eden = 8/10 的新生代空间大小,from = to = 1/10 的新生代空间大小。

免责声明:文章转载自《JVM优化之 -Xss -Xms -Xmx -Xmn 参数设置》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇web安全学习笔记(三):BurpSuite下的Intruder模块系统基础模块之通用字典项目管理下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

【JVM】元空间详解 Metaspace

转载自: https://www.jianshu.com/p/a6f19189ec62 一、从方法区(PermGen)到元空间(Metaspace) 方法区(PermGen) JDK1.8以前的HotSpot JVM有方法区,也叫永久代(permanent generation)。 方法区用于存放已被虚拟机加载的类信息、常量、静态变量,即编译器编译后...

Weblogic常用监控指标

JMSRuntime JMSServersCurrentCount 返回当前JMS服务的连接数ConnectionsCurrentCount 返回本JMS服务器上当前的连接数JMSServersHighCount 返回自服务器启动后JMS服务的最大连接数ConnectionsHighCount 返回本JMS服务器自上次重置后的最大连接数 JVMRuntim...

面试 07-安全问题:CSRF和XSS

07-安全问题:CSRF和XSS #前言 面试中的安全问题,明确来说,就两个方面: CSRF:基本概念、攻击方式、防御措施 XSS:基本概念、攻击方式、防御措施 这两个问题,一般不会问太难。 有人问:SQL注入算吗?答案:这个其实跟前端的关系不是很大。 #CSRF 问的不难,一般问: CSRF的基本概念、缩写、全称 攻击原理 防御措施 如果把攻...

JDK8中JVM堆内存划分

一:JVM中内存 JVM中内存通常划分为两个部分,分别为堆内存与栈内存,栈内存主要用运行线程方法 存放本地暂时变量与线程中方法运行时候须要的引用对象地址。 JVM全部的对象信息都 存放在堆内存中。相比栈内存,堆内存能够所大的多,所以JVM一直通过对堆内存划分 不同的功能区块实现对堆内存中对象管理。 堆内存不够最常见的错误就是OOM(OutOfMemoryE...

JVM常用调优参数以及linux服务器启动项目命令jvm参数调优案例

我们知道:jvm的内存存储以及内存分配,主要集中在方法区、堆。针对这两块,给出的调优参数如下:   一:调优参数初始化堆大小(有的叫jvm内存): -Xms256M //256M指的是具体大小,初始化堆大小=最大堆大小,可以在一定程度上在GC后重新分配内存 最大堆大小(有的叫jvm内存): -Xmx256M //初始化堆大小=最大堆大小,可以在一定...

2.3 JVM内存参数设置

我们可以对运行时数据区的内存进行参数设置. 这是jvm调优的重点. 参数的变化将影响到整体效率 核心参数设置如下: java -Xms2048M -Xmx1024M -Xss512k -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M -jar microservice-eureka-server.jar 这...