JVM调优

野性酷女 2022-01-23 01:43 1682阅读 0赞

年轻代大小选择

响应时间优先的应用:尽可能设大,直到接近系统的最低响应时间限制(根据实际情况选择)。在此种情况下,年轻代收集发生的频率也是最小的。同时,减少到达年老代的对象。

吞吐量优先的应用:尽可能的设置大,可能到达Gbit的程度。因为对响应时间没有要求,垃圾收集可以并行进行,一般适合8CPU以上的应用。

年老代大小选择

响应时间优先的应用:年老代使用并发收集器,所以其大小需要小心设置,一般要考虑并发会话率和会话持续时间等一些参数。如果堆设置小了,可以会造成内存碎片、高回收频率以及应用暂停而使用传统的标记清除方式;如果堆大了,则需要较长的收集时间。最优化的方案,一般需要参考以下数据获得:

  • 并发垃圾收集信息
  • 持久代并发收集次数
  • 传统GC信息
  • 花在年轻代和年老代回收上的时间比例
  • 减少年轻代和年老代花费的时间,一般会提高应用的效率
  • 吞吐量优先的应用

一般吞吐量优先的应用都有一个很大的年轻代和一个较小的年老代。原因是,这样可以尽可能回收掉大部分短期对象,减少中期的对象,而年老代尽存放长期存活对象。

较小堆引起的碎片问题

因为年老代的并发收集器使用标记、清除算法,所以不会对堆进行压缩。当收集器回收时,他会把相邻的空间进行合并,这样可以分配给较大的对象。但是,当堆空间较小时,运行一段时间以后,就会出现“碎片”,如果并发收集器找不到足够的空间,那么并发收集器将会停止,然后使用传统的标记、清除方式进行回收。如果出现“碎片”,可能需要进行如下配置:

  1. -XX:+UseCMSCompactAtFullCollection:使用并发收集器时,开启对年老代的压缩。
  2. -XX:CMSFullGCsBeforeCompaction=0:上面配置开启的情况下,这里设置多少次Full GC后,对年老代进行压缩

发表评论

表情:
评论列表 (有 0 条评论,1682人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JVM

    一、JVM调优的监控方法 jvm在对进行问题排查,线程等关注问题,在理解jvm的内存分配和垃圾回收,java类的编译和加载等等理论知识的前提下要学会使用工具去观察jvm中的实

    相关 JVM

    1. 年轻代大小选择 (1) 响应时间优先的应用:尽可能设大,直到接近系统的最低响应时间限制(根据实际情况选择)。在此种情况下,年轻代收集发生的频率也是最小的。同时,减少到

    相关 spark JVM

    我们的堆内存分为:新生代,和年老代, 年轻代又分为:Eden区,幸存一区,幸存二区, 每一次访对象的时候,都是放入eden区域,和其中的一个幸存一区中,幸存二区是不放对象的

    相关 JVM

    前言 1、堆大小设置 JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。3

    相关 JVM

    前提: 某大型跨境电商业务发展非常快,线上机器扩容也很频繁,但是对于线上机器的运行情况,特别是jvm内存的情况,一直没有一个统一的标准来给到各个应用服务的owner。经过6

    相关 JVM

    JVM的调优主要涉及内存区域大小设置和垃圾回收算法,JVM内存结构如下图 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_sh

    相关 JVM

    年轻代大小选择 响应时间优先的应用:尽可能设大,直到接近系统的最低响应时间限制(根据实际情况选择)。在此种情况下,年轻代收集发生的频率也是最小的。同时,减少到达年老代的对

    相关 JVM

    JVM调优是所有初级程序员向高级迈入的必经之路,而这个过程又需要许多JVM内存知识。下面就总结一二,和大家分享一下: 1.JVM内存模型 JVM内存模型如下图所示: