CMS,堆外内存,System.gc(),堆外内存

类似netty的directBuffer,在堆外申请一块内存,在堆内有一个相应的reference对象,堆外内存的释放,依赖于堆内reference的清理。一般来说,这类reference都是短生命周期的临时对象,所以,younggc就会清理掉这些reference

但是,负载搞的情况下,这些reference对象可能晋升到old区,导致这些堆外内存不能及时释放。就会导致堆外内存触发System.gc()

System.gc()会直接触发系统的FullGC,导致STW脚长时间,一般是秒级别。

对于OLD区使用CMS的应用,也会触发STW的FullGC。 但是这个参数又不能通过 DIsableExplicitGC关掉,否者会导致OOM direct memory.

如果使用CMS,可以增加 -XX:+ExplicitGCInvokesConcurrent 参数,使System.gc()触发的FullGC为CMS,防止过长的STW时间。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 原文阅读 前言 这段时间懈怠了,罪过! 最近看到有同事也开始用上了微信公众号写博客了,挺好的~给他们点赞,这博客我...
    码农戏码阅读 6,163评论 2 31
  • 1.什么是垃圾回收? 垃圾回收(Garbage Collection)是Java虚拟机(JVM)垃圾回收器提供...
    简欲明心阅读 90,386评论 17 311
  • System.gc整理 System.gc()源码public static void gc() { Runtim...
    andersonoy阅读 3,148评论 0 1
  • JVM架构 当一个程序启动之前,它的class会被类装载器装入方法区(Permanent区),执行引擎读取方法区的...
    cocohaifang阅读 1,852评论 0 7
  • 前言 JVM的GC机制让Java程序员省去了自己垃圾回收的烦恼,大大提高了生产效率。但是正因为JVM垃圾回收机制足...
    阿飞的博客阅读 17,699评论 10 95

友情链接更多精彩内容