sunxp-java 2024-02-12 21:01 采纳率: 81.8%
浏览 11
已结题

fullGC后物理内存没有下降

JVM 老年代内存到达6个G左右执行了一次FullGC

img


下面这张图是执行过FullGC后的

img


经过了FullGC后,物理每次,没有下降,目前还在持续上升

img


这个是什么原因导致的

  • 写回答

4条回答 默认 最新

  • GISer Liu 2024-02-12 21:02
    关注

    该回答引用自GPT-3.5,由博主GIS_Liu编写:

    针对你描述的问题,出现 Full GC 后物理内存没有下降的情况,可能有以下几个原因:

    1. 内存泄漏:Full GC 后物理内存没有下降可能是因为存在内存泄漏。内存泄漏通常是由于对象没有被正确释放而导致的,可能是因为某些对象被长时间引用而无法被垃圾回收器释放。

    2. 对象生命周期过长:有些对象的生命周期过长,导致在 Full GC 后仍然存在于堆中,这也可能导致物理内存没有下降。

    3. 堆外内存使用:另外,物理内存没有下降也可能是因为 JVM 使用了堆外内存,即非 Java 堆中的内存。堆外内存不受 JVM 的垃圾回收管理,因此 Full GC 对其没有影响。

    解决这个问题的思路和方案可以如下:

    1. 内存泄漏排查:通过工具如 VisualVM、MAT(Memory Analyzer Tool)等进行内存分析,查找是否存在内存泄漏的情况。定位到泄漏对象,并检查其引用链,找出引用关系,解决泄漏问题。

    2. 优化对象生命周期:检查代码中对象的创建和销毁逻辑,确保对象在不再需要时能够被及时释放。可以使用一些技术手段如对象池、软引用、弱引用等来优化对象的生命周期。

    3. 堆外内存管理:如果确认是堆外内存使用导致的物理内存没有下降,可以考虑优化堆外内存的使用方式,确保不需要时能够及时释放。可以使用 ByteBuffer 等方式管理堆外内存的分配和释放。

    综上所述,针对物理内存没有下降的问题,首先需要进行内存泄漏排查,然后优化对象生命周期,最后考虑堆外内存的管理方式。

    img

    如果该回答解决了您的问题,请采纳!如果没有,请详述问题所在!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 2月20日
  • 已采纳回答 2月12日
  • 创建了问题 2月12日

悬赏问题

  • ¥20 Wpf Datarid单元格闪烁效果的实现
  • ¥15 图像分割、图像边缘提取
  • ¥15 sqlserver执行存储过程报错
  • ¥100 nuxt、uniapp、ruoyi-vue 相关发布问题
  • ¥15 浮窗和全屏应用同时存在,全屏应用输入法无法弹出
  • ¥100 matlab2009 32位一直初始化
  • ¥15 Expected type 'str | PathLike[str]…… bytes' instead
  • ¥15 三极管电路求解,已知电阻电压和三级关放大倍数
  • ¥15 ADS时域 连续相位观察方法
  • ¥15 Opencv配置出错