Java 内存占用一直增长但是 dump 文件没有啥内容

2022-12-06 11:22:15 +08:00
 shanghai1943

机器配置:2c4g

从 ecs 机器监控上看到内存占用最近几个星期缓慢增长到了差不多 70% 左右,打了 dump, 文件大概是 200m 不到,Java 应用重启后监控看到内存掉到了 40%

命令行参数如下: -Xms2048M -Xmx2048M -Xmn512M -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/logs/ -XX:+UseG1GC -XX:G1HeapRegionSize=4M -XX:MaxTenuringThreshold=12 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -Xloggc:/path/logs/gc-%t.log -XX:+UseGCLogFileRotation -XX:GCLogFileSize=512k -Djava.library.path=/path/bin

想问下大概会是哪些原因呢?

感谢。

710 次点击
所在节点    问与答
3 条回复
weiweiwitch
2022-12-06 11:44:49 +08:00
Java 的 Xmx 只是设定 Java 堆内存的上限。但堆外,包括代码区,线程,GC ,直接内存等等,还会占用很多内存。所以你看到的占用了 70%是正常的。据说(我还没在生产环境遇到),使用 G1 收集器,极限情况下整个进程的内存占用会达到 Xmx 的 2 倍。
所以,如果你的 Xmx 是 2G ,那么安全期间,你的机器的内存需要 4G 以上。
weiweiwitch
2022-12-06 11:45:52 +08:00
https://blog.csdn.net/w1014074794/article/details/113340344
这篇文章会帮你理解一些内存上的东西。
shanghai1943
2022-12-06 11:49:12 +08:00
@weiweiwitch #2 感谢。我先学习下。

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

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

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

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

© 2021 V2EX