JVM优化之 -Xss -Xms -Xmx -Xmn 参数设置[通俗易懂]

JVM优化之 -Xss -Xms -Xmx -Xmn 参数设置[通俗易懂]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/135670.html原文链接:https://javaforall.net

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


相关推荐

  • 远程连接mysql8,报错10061 解决办法「建议收藏」

    远程连接mysql8,报错10061 解决办法「建议收藏」mysql8.0的1,检查服务器mysql服务是否启动100612,mysql必须设置密码,不然报错10061usemysql;updateusersetauthentication_string=””whereuser=“root”;flushprivileges;ALTERUSER‘root’@’%’IDENTIFIEDWITHmysql_native_passwordBY‘密码’;3,selectHost,Userfromuser;查看roo

    2022年10月13日
    2
  • 类加载器的双亲委派模型_java mock 模拟接口

    类加载器的双亲委派模型_java mock 模拟接口JVM类加载器JVM主要有以下几种类加载器:引导类加载器主要加载JVM运行核心类库,位于JRE的lib目录下,如rt.jar中的类。扩展类加载器主要加载JVM中扩展类,位于JRE的ext目录下。应用程序类加载器主要负责加载ClassPath路径下的类,也就是业务类。自定义加载器负责加载用户自定义路径下的类。类加载器关系…

    2022年8月11日
    6
  • pytest skipif_白盒测试用例

    pytest skipif_白盒测试用例前言pytest.mark.skip可以标记无法在某些平台上运行的测试功能,或者您希望失败的测试功能Skip和xfail:处理那些不会成功的测试用例你可以对那些在某些特定平台上不能运行的测试用

    2022年7月28日
    2
  • 商标注册_企业软件

    商标注册_企业软件开发软件时,当用到商业用途时,注册码与激活码就显得很重要了。现在的软件激活成功教程技术实在在强了,各种国内外大型软件都有注册机制,但同时也不断地被激活成功教程。下面发的只是一个常用版本,发出源码被破就更容易了,但我们学习的是技术。当然也为以后自己的软件不会被轻易激活成功教程。第一步。根据卷标,CPU序列号,生成机器码//取得设备硬盘的卷标号       publicstaticstringG

    2022年9月1日
    2
  • document.all详解「建议收藏」

    document.all详解「建议收藏」(1)document.all是页面内所有元素的一个集合。 document.all[]这个数组可以访问文档中所有元素。document.all(0)表示页面内第一个元素(2)document.all可以判断浏览器是否是IEif(document.all){alert(“isIE!”);}(3)也可以通过给某个元素设置id属性(id=good),然

    2022年7月12日
    23
  • apache功能配置

    apache功能配置

    2021年9月8日
    54

发表回复

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

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