java面试-JVM常用的基本配置参数有哪些?

1、-Xms

  • 初始大小内存,默认为物理内存 1/64,等价于 -XX:InitialHeapSize

2、-Xmx

  • 最大分配内存,默认为物理内存的 1/4,等价于 -XX:MaxHeapSize

3、-Xss

  • 设置单个线程栈的大小,一般默认为 512-1024k,等价于 -XX:ThreadStackSize

4、-Xmn

  • 设置年轻代的大小

        整个JVM内存大小=年轻代大小 + 年老代大小 + 持久代大小

        持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。

5、-XX:MetaspaceSize

  • 设置元空间大小

        元空间的本质和永久代类似,都是对 JVM 规范中的方法区的实现。
        元空间与永久代之间最大区别:元空间并不在虚拟机中,而是使用本地内存
        因此默认情况下,元空间的大小仅受本地内存限制,元空间默认比较小,我们可以调大一点

-Xms10m -Xmx10m -XX:MetaspaceSize=512m -XX:+PrintCommandLineFlags -XX:+PrintGCDetails -XX:+UseSerialGC

6、-XX:+PrintGCDetails

  • 输出详细GC收集日志信息
/** 
 *设置JVM参数为: -Xms10m -Xmx10m -XX:+PrintGCDetails
 */
public class HelloGC {
    public static void main(String[] args) throws InterruptedException {
        System.out.println("*****helloGC");
        byte[] bytes = new byte[50 * 1024 * 1024];
    }
}

规律:名称:GC前内存占用->GC后内存占用(该区内存总大小)

7、-XX:SurvivorRatio

  • 设置新生代中 eden 和 S0/S1 空间比例,默认 -XX:SurvivorRatio=8,Eden : S0 : S1 = 8 : 1 : 1

8、-XX:NewRatio

  • 配置年轻代和老年代在堆结构的占比,默认 -XX:NewRatio=2 新生代占1,老年代占2,年轻代占整个堆的 1/3

9、-XX:MaxTenuringThreshold

  • 设置垃圾最大年龄

猜你喜欢

转载自www.cnblogs.com/wjh123/p/11141711.html
今日推荐