JVM专题#JVM内存参数设置

JVM内存参数设置

JVM专题#JVM内存参数设置_第1张图片

  • 元空间参数(方法区)

    -XX:MaxMetaspaceSize: 设置元空间最大值,默认是-1,即不限制,或者说只受限于本地内存大小

    -XX:MetaspaceSize:指定元空间触发Full GC的初始阈值(元空间无固定初始大小),以字节为单位,默认是21M,达到该值就会触发Full GC进行类型卸载,同时收集器会对该值进行调整:如果释放了大量的空间,就适当降低该值;如果释放了很少的空间,那么在不超过-XX:MaxMetaspaceSize(如果设置了的话)的情况下, 适当提高该值

  • 栈/线程栈

    -Xss:用于设置每个线程的栈大小,设置越小,说明占用内存越少,对应的一个线程栈里能分配的栈帧就越少,但是对JVM整体来说能开启的线程数会更多(通常1M或512KB)

  • -Xms:初始化堆大小,若实际使用内存超过初始值,会自动扩展至-Xmx指定的最大值;设置过小,可能导致频繁 GC(垃圾回收),影响性能;设置过大,启动时占用过多内存,可能导致系统资源紧张

    -Xmx:设置堆的最大大小;设置过小,可能导致频繁 Full GC 或内存溢出;设置过大,可能导致 GC 暂停时间过长,影响应用响应性

    -Xmn:设置新生代内存大小,细分为 Eden 区 和两个 Survivor 区(S0、S1),默认占用的比例为 8:1:1;增大-Xmn会减少老年代空间,可能导致老年代 Full GC 频繁;减小-Xmn会使新生代对象更快进入老年代(晋升),同样可能触发 Full GC

    注:当堆内存达到最大值仍不足时,会抛出 OutOfMemoryError异常,-Xmn 的值不能超过 -Xmx(最大堆内存)

你可能感兴趣的:(jvm)