Java内存管理之类似-Xms、-Xmx 这些参数的含义

一、Java 内存管理之类似 - Xms、-Xmx 这些参数的含义

答:

  1. 堆内存分配:
  • -Xms JVM 初始分配的内存由 -Xms 指定,默认是物理内存的 1/64;

  • -Xmx JVM 最大分配的内存由 -Xmx 指定,默认是物理内存的 1/4;

    默认空余堆内存小于 40% 时,JVM 就会增大堆直到 - Xmx 的最大限制;空余堆内存大于 70% 时,JVM 会减少堆直到 -Xms 的最小限制;
    因此服务器一般设置 - Xms、-Xmx 相等以避免在每次 GC 后调整堆的大小。对象的堆内存由称为垃圾回收器的自动内存管理系统回收。

  • -Xmn 堆内新生代的大小。通过这个值也可以得到老生代的大小:-Xmx 减去 - Xmn

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

  1. 对于具体含义的猜测: ⭐️⭐️⭐️
  • -Xms:minimum memory size for pile and heap

  • -Xmx:maximum memory size for pile and heap

  • eXtendable 我觉得 X 指的就是可扩展的意思,因为堆内存可动态扩展。

  • -Xms ,eXtendable memory size 表示 初始 memory size(m 表示 memory,s 表示 size)。初始暗含最小(minimum)的意思。(常用的做法中初始内存采用的也就是最小内存)

  • -Xmx,不压缩表示应该是-Xmsx : eXtendable memory maximum size , x 采用计算机中约定表示方式: 用 x 表示 “大”。为了对齐三字符,压缩了其表示形式,把最后一个 s 省略了。

  1. 非堆内存分配:
  • JVM 使用 -XX:PermSize 设置非堆内存初始值,默认是物理内存的 1/64;
  • 由 XX:MaxPermSize 设置最大非堆内存的大小,默认是物理内存的 1/4;
  • -Xmn2G:设置年轻代大小为 2G;
  • -XX:SurvivorRatio:新生代中Eden区与两个Survivor区的比值。注意 Survivor 区有两个。
    如: -XX:SurvivorRatio=3,表示 Eden : Survivor=3 : 2,一个 Survivor 区占整个新生代的1/5

二、JVM 其他参数常用参数

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 数。并行收集线程数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值