V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ffw5b7
V2EX  ›  Java

[内存异常排查求助]

  •  
  •   ffw5b7 · 1 天前 via Android · 815 次点击
    堆内外与 RES 使用不一致,RES 过大,差异的内存使用在哪?什么内容,怎么产生。
    下面是对比图 2 张。
    https://imgur.com/a/jNq0D6X
    6 条回复    2025-03-18 17:59:03 +08:00
    ala2008
        1
    ala2008  
       1 天前
    能不能 java dump 然后 Eclipse Memory Analyzer 看下,很清晰的
    ffw5b7
        2
    ffw5b7  
    OP
       1 天前 via Android
    dump 下来是 gc 过的,很小只有 70m ,分析都是类加载器相关的
    @ala2008
    lwq84510
        3
    lwq84510  
       1 天前
    这个我觉得无解(也可能是我不会),JVM 申请的内存, 就算 GC 后也不返还给系统,所以申请了多大就占了多大
    zizon
        4
    zizon  
       1 天前
    堆内堆外只是相对于 jvm runtime 而言提供给你的 application 层面的内存统计占用.
    其他的还包括 jvm/runtime 自身的一些开销.诸如线程栈,读些文件过程中的 page cache 之类的 os 层面的 整个进程 在 os 层面 的内存使用.

    你纠结后者的话应该用 perf 去看.
    ffw5b7
        5
    ffw5b7  
    OP
       1 天前 via Android
    JVM 进程的总内存使用 = JVM Heap (堆)+ Thread Stack (线程栈)+ Metaspace (元空间)+ Code Cache (代码缓存)+ OS 层面的 Page Cache + mmap (直接内存/NIO )+ 共享库/动态库 + 线程调度相关开销。


    靠后面的好难排查。
    litchinn
        6
    litchinn  
       22 小时 35 分钟前
    pidstat 看看
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5127 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 08:34 · PVG 16:34 · LAX 01:34 · JFK 04:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.