
【GC相关】
GC
zero__007
这个作者很懒,什么都没留下…
展开
-
FileChannle#map引发的OOM
转载自:http://goo.gl/Xv5j3t 故障现象为:应用日志中发现了大量的OOM异常:Caused by: java.lang.OutOfMemoryError: Map failed。跟踪堆栈找到抛出异常的地方是在 FileChannle#map,这个方法是创建一个内存映射文件,应用为了降低堆内存的使用,同时提高写入的效率,将一个文件分成多段,内存映射多个MappedByteBuffer进行读写操作;跟踪fileChannle.map的方法发现最终调用的是FileChannelImpl转载 2020-06-06 16:30:52 · 598 阅读 · 1 评论 -
ZGC垃圾收集器
转载自:https://blog.csdn.net/huaishu/article/details/103596531 https://houbb.github.io/2018/11/28/java-gc-optimize https://www.jianshu.com/p/4e4fd0dd5d25 Java11已经推出最新垃圾收集器,ZGC主要为了减少JVM停顿时间。...转载 2020-01-13 17:07:22 · 3061 阅读 · 0 评论 -
GC调优经验
YGC是最频繁发生的,发生的概率是OldGC和FullGC的的10倍,100倍,甚至1000倍。同时YoungGC的问题也是最难定位的。这里给出YGC定位三板斧:查看服务器SWAP&IO情况,如果服务器发生SWAP,会严重拖慢GC效率,导致STW时间异常长,拉长接口响应时间,从而影响用户体验(推荐sar工具);查看StringTable情况(请参考:探索StringTable提升YGC性能)排查每次YGC后幸存对象大小(JVM模型基于分配的对象朝生夕死的假设设计,如果每次YGC后幸存对象较原创 2020-06-06 15:51:32 · 706 阅读 · 0 评论 -
小内存为什么不建议使用CMS
转载自:http://hellojava.info/?p=142 之前曾经有讲过在heap size<=3G的情况下完全不要考虑CMS GC,在heap size>3G的情况下也优先选择ParallelOldGC,而不是CMS GC,只有在暂停时间无法接受的情况下才考虑CMS GC(不过当然,一般来说在heap size>8G后基本上都得选择CMS GC,否则那暂停时间是相当...转载 2019-08-06 18:33:21 · 1706 阅读 · 2 评论 -
G1相关参数
• -XX:+UseG1GC启用G1垃圾收集器• -XX:G1HeapRegionSize=n区域的大小。值是2的幂,范围是1 MB到32 MB之间。目标是根据最小的Java 堆大小划分出约 2048 个区域。这个值的默认值是根据堆的大小决定的。• -XX:MaxGCPauseMillis=200最长暂停时间设置目标值。默认值是200 毫秒。• -XX:InitiatingHeapOc...原创 2018-11-12 16:36:40 · 3730 阅读 · 0 评论 -
MaxTenuringThreshold 和 TargetSurvivorRatio参数说明
-XX:MaxTenuringThreshold 晋升年龄最大阈值,默认15。在新生代中对象存活次数(经过YGC的次数)后仍然存活,就会晋升到老年代。每经过一次YGC,年龄加1,当survivor区的对象年龄达到TenuringThreshold时,表示该对象是长存活对象,就会直接晋升到老年代。-XX:TargetSurvivorRatio 设定survivor区的目标使用率。默认50,即sur原创 2016-10-12 15:33:44 · 7493 阅读 · 0 评论 -
JVM内存分配与回收策略
对象优先在Eden分配 大多数情况下,对象在新生代Eden区中分配。当Eden区没有足够空间进行分配时,虚拟机将发起一次Minor GC。 这里说下,Minor GC与Major GC/Full GC: 新生代GC(Minor GC):发生在新生代的垃圾收集动作,因为Java对象大多都具有朝生夕灭的特性,因此Minor GC非常频繁,一般回收速度也比较快...原创 2015-07-20 11:27:53 · 588 阅读 · 0 评论 -
JVM参数
JVM参数命令行选项主要有3类:标准选项、非标准选项和非稳定选项。 标准选项是要求所有Java虚拟机都必须实现的选项。 非标准选项(以-X为前缀)不保证、也不强制所有JVM实现都必须支持。 非稳定选项(以-XX为前缀)通常是为了特定的需要而对JVM的运行进行校正,并且可能需要有系统配置参数的访问权限。对于带有布尔标记的非稳定选项来说,选项名前的+或-表示tru...原创 2015-10-20 16:20:04 · 584 阅读 · 0 评论 -
CMS垃圾收集器
CMS收集器(Concurrent Mark Sweep),年老代垃圾收集器,最主要目标是获取最短垃圾回收停顿时间,使用多线程的标记-清除算法,实现了让垃圾收集线程和用户线程同时工作。 初始标记(CMS initial mark)只是标记一下GC Roots能直接关联的对象,速度很快,仍然需要暂停所有的工作线程。 并发标记(CMS concurrent mark)进行...原创 2016-10-09 19:23:24 · 690 阅读 · 0 评论 -
GC优化案例
转载自:https://tech.meituan.com/jvm_optimize.html案例一 Major GC和Minor GC频繁 服务情况:Minor GC每分钟100次 ,Major GC每4分钟一次,单次Minor GC耗时25ms,单次Major GC耗时200ms,接口响应时间50ms。优化 首先优化Minor GC频繁问题。通常情况下,由于新生代空间较小,Eden区...转载 2018-10-27 22:12:13 · 322 阅读 · 0 评论 -
G1垃圾收集器
概述 G1垃圾收集器(Garbage First)是一个并行的、并发的、面向服务器的垃圾收集器的垃圾收集器。G1在Oracle JDK 7 update 4 及以上版本中得到完全支持,它的长远目标时代替CMS收集器。相较于CMS,G1是一款压缩型的收集器,不会产生内存碎片;可以极高概率满足GC停顿时间,实现低停顿垃圾回收。 G1是区域化、分代式垃圾回收器, Java对象堆被划分成若干个大小...原创 2018-11-12 16:28:52 · 863 阅读 · 0 评论