美文网首页
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(),堆外内存

    类似netty的directBuffer,在堆外申请一块内存,在堆内有一个相应的reference对象,堆外内存的...

  • 直接内存与 JVM 源码分析

    直接内存(堆外内存) 直接内存有一种叫法,堆外内存。 直接内存(堆外内存)指的是 Java 应用程序通过直接方式从...

  • 堆外内存

    1.off-heaps DirectByteBuffer等可以对其进行操作; 优点:速度快 Netty中经常使用它...

  • JVM如何分配和回收堆外内存

    JVM内存模型 在JVM中内存被分成两大块,分别是堆内存和堆外内存,堆内存就是JVM使用的内存,而堆外内存就是非J...

  • Netty-内存管理

    但是内存拷贝对性能有可能影响比较大,所以Java中可以绕开堆内存直接操作堆外内存,问题是创建堆外内存的速度比堆内存...

  • 堆外内存 之 DirectByteBuffer 详解

    堆外内存 堆外内存是相对于堆内内存的一个概念。堆内内存是由JVM所管控的Java进程内存,我们平时在Java中创建...

  • 堆外内存 之 DirectByteBuffer 详解

    堆外内存 堆外内存是相对于堆内内存的一个概念。堆内内存是由JVM所管控的Java进程内存,我们平时在Java中创建...

  • 堆外内存整理

    堆外内存, JDK 1.4 nio引进了ByteBuffer.allocateDirect()分配堆外内存 Byt...

  • Netty系列之Direct Buffers

    1、什么是堆外内存堆外内存是相对于堆内内存的一个概念。堆内内存是由JVM所管控的Java进程内存,我们平时在Jav...

  • Java堆外内存的回收机制

    1 堆外内存 JVM启动时分配的内存,称为堆内存,与之相对的,在代码中还可以使用堆外内存,不如Netty,广泛使用...

网友评论

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

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