[内存异常排查求助]

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

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


靠后面的好难排查。
litchinn
litchinn
3 天前
pidstat 看看

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1119251

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX