jvmxmx和xms参数分析(设定优化校准)

XmnXmsXmxXss有什么区别Xmn、Xms、Xmx、Xss都是JVM对内存的配置参数,我们可以根据不同需要区修改这些参数,以达到运行程序的最好效果。-Xms堆内存的最小大小,默认为物理内存的1/64-Xmx堆内存的最大大小,默认为物理内存的1/4-Xmn堆内新生代的大小。通过这个值也可以得到老生代的大小:-Xmx减去-Xmn-Xss设置每个线程可使用的内存大小,即…

大家好,又见面了,我是你们的朋友全栈君。

XmnXmsXmxXss有什么区别

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数。并行收集线程数。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/125530.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 用AVX2指令集优化整形数组求和

    用AVX2指令集优化整形数组求和用AVX2指令集优化高精度加法一、AVX2指令集介绍二、代码实现1.普通高精度加法2.AVX2加速高精度加法3.实现细节说明三、性能测试测试环境计时方式测试内容测试命令测试结果四、总结个人推断原因:一、AVX2指令集介绍AVX2是SIMD(单指令多数据流)指令集,支持在一个指令周期内同时对256位内存进行操作。包含乘法,加法,位运算等功能。下附Intel官网使用文档。Intel®IntrinsicsGuide我们本次要用到的指令是__m256i_mm256_add_epi8(__m2

    2022年5月7日
    50
  • 关于c#中的dialogresult

    关于c#中的dialogresult
    在botton里面设置dialogresult为ok的时候,按下按钮窗口会自然关闭,这是由于窗口时模态显示的原因
    这种方式多用于设置对话框吧。。。
    但是更多时候必须判断对话框里里的输入是否有效或者其他一些判断
    所以不推荐奖button的dialogresult属性直接设置为ok
    而是动态用代码实现,但条件成立的时候写上
    this.DialogResult=DialogResult.ok;
    这样可以避免一些异常的捕捉和判断。。。

    2022年6月22日
    41
  • Java拦截器步骤

    Java拦截器步骤拦截器是JavaWeb开发中必须用的技术,可以对整个系统字符集编码、URL访问权限过滤、过滤敏感词信息、session用户是否存在、日志记录等等,拦截器支队controller请求起作用,接下来小编讲解下spring框架中拦截器如何使用工具/原料myeclipsespring框架方法/步骤

    2022年5月28日
    39
  • pycharm怎么编译python_python需要编译器吗

    pycharm怎么编译python_python需要编译器吗PyCharm编译器有很强大的代码提示功能,业界都说很好用,所以我尝试着安装并使用,以下是过程。下载地址:http://www.jetbrains.com/pycharm/download/#section=windows安装完成之后需要激活我选择的是Licenceserver,然后输入一下的链接http://idea.imsxm.com/即可激活,亲测可用,若果失效了那就…

    2025年6月17日
    3
  • FRP内网穿透_frp内网穿透原理

    FRP内网穿透_frp内网穿透原理frp点对点udp方式内网穿透ssh,节省服务器流量(2019年5月30日) frpssh安全连接和服务器安全设置(2019年5月29日) frp控制台监控dashboard配置(2019年5月27日) frp内网穿透公网访问本地web服务(2019年5月26日) frp安装教程穿透SSH(2019年5月25日) fr…

    2025年11月6日
    3
  • Java考试题30道(附答案)

    Java考试题30道(附答案)1. 在WEB-INF目录下,必须存放的文件为:   BA.class文件B.web.xmlB.jar文件D.html文件2.下面哪个不是JAVA关键字  A  A integer  B double  C float  D default3. 构造函数何时被调用( )  BA.类定义时B.创建对象时C.调用对象方法时D.使用对象的变量时4. 下面哪项不是respons…

    2025年6月2日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号