美文网首页
JVM常见参数配置

JVM常见参数配置

作者: 01_小小鱼_01 | 来源:发表于2018-04-03 23:04 被阅读62次

    首先,从一道简单的面试题开始说起,对于jvm内存配置参数:

    -Xmx10240m -Xms10240m -Xmn5120m -XXSurvivorRatio=3 
    

    其最小内存值和Survior区总大小分别是多少?

    要解决这个问题,我们需要了解JVM的内存是如何划分的,如下图: JVM堆、方法区内存分配
    其实答案很简单只需要了解上面的各个参数的意义就可以了。
    • -Xmx :堆的最大值
    • -Xms :堆的最小值
    • -Xmn :堆年轻代大小
    • -XXSurvivorRatio:Eden区和Survior区的占用比例

    下面正式介绍几个常见的JVM参数。

    1. Trace跟踪参数

    1. 打印GC的简要信息
    -verbose:gc
    -XX:+printGC
    
    [GC 4790K->374K(15872K), 0.0001606 secs]
    GC之前用了4M左右的内存,GC之后为375K,将进释放了4M内存,总共内存大小为16M左右
    
    1. 打印GC的详细信息
    -XX:+PrintGCDetails
    -XX:+PrintGCTimeStamps
    -XX:+PrintHeapAtGC         每一次GC前和GC后,都打印堆信息
    -XX:+TraceClassLoading  监控类的加载
    -XX:+PrintClassHistogram  按下Ctrl+Break后,打印类的信息
    
    [GC[DefNew: 4416K->0K(4928K), 0.0001897 secs] 4790K->374K(15872K), 
    0.0002232 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
    新生代GC,GC之前新生代使用4M内存,GC之后使用0M内存。
    GC之前Java 堆内存使用4M内存,GC之后Java 堆内存使用374K
    
    1. 指定GC log的位置
    -Xloggc:log/gc.log
    

    2. 堆的分配参数

    • -Xmx 指定最大堆
    • -Xms 指定最小堆
    • -Xmn 设置新生代大小
    • -XX:NewRatio 新生代(eden+2*s)和老年代(不包含永久区)的比值
      例如:4,表示新生代:老年代=1:4,即新生代占整个堆的1/5
    • -XX:SurvivorRatio(幸存代)设置两个Survivor区和eden的比值
      例如:8,表示两个Survivor:eden=2:8,即一个Survivor占年轻代的1/10
    • -XX:+HeapDumpOnOutOfMemoryError OOM时导出堆到文件
    • -XX:+HeapDumpPath 导出OOM的路径
    • -XX:PermSize 设置永生代大小
    • -XX:MaxPermSize 设置永生带最大值
    -Xmx20m -Xms20m -Xmn7m -XX:SurvivorRatio=2 -XX:+PrintGCDetails
    
    -Xmx20m -Xms5m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=d:/a.dump
    
    -XX:OnOutOfMemoryError=D:/tools/jdk1.7_40/bin/printstack.bat %p //p代表的是当前进程的pid 
    //系统的最大空间
    System.out.println("Xmx=" + Runtime.getRuntime().maxMemory() / 1024.0 / 1024 + "M");
    //系统的空闲空间
    System.out.println("free mem=" + Runtime.getRuntime().freeMemory() / 1024.0 / 1024 + "M");
    //当前可用的总空间
    System.out.println("total mem=" + Runtime.getRuntime().totalMemory() / 1024.0 / 1024 + "M");
    

    3. 栈的分配参数

    • Xss
    -Xss128K 
    

    更多内容

    1. 一次CMS GC问题排查过程(理解原理+读懂GC日志)
    2. 记一次JVM GC日志分析
    3. GC日志查看分析

    相关文章

      网友评论

          本文标题:JVM常见参数配置

          本文链接:https://www.haomeiwen.com/subject/vdtqhftx.html