Quarkus应用低负载时JVM直接缓冲区内存占用过高问题问询
直接缓冲区内存低负载高占用问题
我有一个基于Quarkus框架构建的Java应用,部署完成后立即占用大量直接缓冲区内存。监控指标jvm_buffer_total_capacity_bytes显示,即便CPU处于空闲状态、几乎没有请求进入,仍有近2.5GB内存被占用。
但当应用在23:00后进入活跃状态,垃圾回收器开始全力工作时,jvm_buffer_total_capacity_bytes指标骤降至仅几MB。
另一次运行中,我使用jcmd VM.native_memory检查原生内存差异,启动几分钟后的基线与最高占用时的输出对比如下:
[0x00007fd60cd53d71] Unsafe_AllocateMemory0+0x81 [0x00007fd5f47d9861] (malloc=859648KB type=Other +777122KB #2750 +2443)
问题
为何应用在低负载状态下会出现直接缓冲区内存高占用的情况?
环境配置
- OpenJDK 64-Bit Server VM Corretto-21.0.0.35.1(build 21+35-LTS, mixed mode, sharing)
- JVM参数:
-Xms8000M -Xmx8000M -XX:+UseG1GC - 已启用Java Flight Recorder
- 监控指标趋势:低负载阶段
jvm_buffer_total_capacity_bytes维持近2.5GB,23:00应用活跃后该指标快速降至几MB
内容的提问来源于stack exchange,提问作者Urb
相关产品推荐
相关产品推荐

