美文网首页
GC日志,Xms,Xmx,Xmn

GC日志,Xms,Xmx,Xmn

作者: abc_wangyu | 来源:发表于2017-07-21 11:45 被阅读85次

1 GC日志中Times代表什么意思?

2015-05-26T14:45:37.987-0200 : 151.126 : [GC [PSYoungGen: 142816K->10752K(142848K)] 246648K->243136K(375296K),0.0935090secs][Times: user=0.55,sys=0.10, real=0.09secs]

2015-05-26T14:45:37.987-0200 : GC事件(GC event)开始的时间点。对应参数:-XX:+PrintGCDateStamps

151.126 : GC时间的开始时间,相对于JVM的启动时间,单位是秒(Measured in seconds)。对应参数:XX:+PrintGCTimeStamps

user是用户态耗费的时间(单核CPU用时),sys是内核态耗费的时间(单核CPU用时),real是整个过程实际花费的时间。

它显示了GC运行的“真实”时间(0.09秒是0.0929090秒的近似值)。如果CPU时间(译者注:0.55秒+0.10秒)明显多于”真实“时间(译者注:0.09秒),我们可以得出结论:GC使用了多线程运行。这样的话CPU时间就是所有GC线程所花费的CPU时间的总和。实际上我们的例子中的垃圾收集器使用了8个线程。

例: [GC (Allocation Failure) 151.126: [DefNew: 629119K->69888K(629120K), 0.0584157 secs] 1619346K->1273247K(2027264K), 0.0585007 secs][Times: user=0.06 sys=0.00, real=0.06 secs] .由于垃圾收集器是DefNew,使用单个线程, 所以 real time 等于 user 以及 system time 的总和,没有延迟程序的耗时。

real 从程序开始到程序执行结束时所消耗的时间,包括CPU的用时和所有延迟程序执行的因素的总和。

cpu用时被划分为user和sys两块。user表示程序本身,以及它所调用的库中的子例程使用的时间。sys是由程序直接或间接调用的系统调用执行的时间。

real=cpu用时+其他因素时间,

cpu用时=user+sys

所以: real >= user + sys (单核情况)

在多处理器的系统上,一个进程如果有多个线程或者有多个子进程可能导致Real time比CPU time(User + Sys time)要小,这是因为不同的线程或进程可以并行执行。( http://blog.sciencenet.cn/blog-830496-782593.html )


2 合适的调整新生代的大小(Xmn)

-Xmn 设置新生代大小。等价于 设置 -XX:NewSize和 -XX:MaxNewSize 这两个参数

新生代太小导致Mionr的频率大幅上升,也会导致大量对象进入旧生代,触发FullGC。

新生代太大,导致老生代太小,FullGC频率上升,也有可能导致MinorGC的时间上升。

官方推荐配置为整个堆的3/8


3 Xms和Xmx

JVM初始分配的堆内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的堆内存由-Xmx指定,默认是物理内存的1/4。默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。

因此服务器一般设置-Xms、-Xmx 相等以避免在每次GC 后调整堆的大小。

说明:如果-Xmx 不指定或者指定偏小,应用可能会导致java.lang.OutOfMemory错误,此错误来自JVM,不是Throwable的,无法用try...catch捕捉

相关文章

  • GC日志,Xms,Xmx,Xmn

    1 GC日志中Times代表什么意思? 2015-05-26T14:45:37.987-0200 : 151.12...

  • GC ( Java)

    1、GC相关的参数: -Xms / -Xmx — 堆的初始大小 / 堆的最大大小 -Xmn — 堆中年轻代的大小 ...

  • JVM常用参数

    GC常用参数 -Xmn 年轻代大小 -Xms 堆的最小值 -Xmx 堆的最大值通常最大和最小设置相同值 减少jvm...

  • JVM内存设置多大合适?Xmx和Xmn如何设置?

    转载地址 https://www.dutycode.com/jvm_xmx_xmn_xms_shezhi.html...

  • JVM垃圾回收实践

    例子1 设置vm参数 -verbose:gc ,表示会输出GC的详细日志-Xms20M ,堆初始的大小-Xmx2...

  • jvm调优基本知识

    java -Xmx3550m -Xms3550m -Xmn2g -Xss128k-Xmx3550m:设置JVM最大...

  • RocektMQ JVM参数

    Broker /bin/java-server-Xms1024m-Xmx1024m-Xmn256m -XX:+Us...

  • JVM内存配置参数

    JVM内存配置参数: -Xmx10240m -Xms10240m -Xmn5120m -XXSurvivorRat...

  • JVM参数配置

    参数解释: 示例: -Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails -XX...

  • JVM参数配置

    -Xmx:最大堆大小-Xms:初始堆大小-Xmn:年轻代大小-XXSurvivorRatio:年轻代中Eden区与...

网友评论

      本文标题:GC日志,Xms,Xmx,Xmn

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