美文网首页
CMS,堆外内存,System.gc(),堆外内存

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

作者: 懿行 | 来源:发表于2018-05-07 20:16 被阅读147次

    类似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时间。

    相关文章

      网友评论

          本文标题:CMS,堆外内存,System.gc(),堆外内存

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