java - RSS 内存在空闲 Java 进程上增长
问题描述
我正在运行几个用 java 编写的小型服务器。有一个监听标准套接字,其余的使用 ActiveMQ 相互通信。我注意到一些奇怪的事情,如果我让系统闲置几个小时,RSS 内存要么增长几到几十兆,要么缩小几到几十兆。我使用 jconsole 查看服务器中发生了什么,但内存使用和对象创建保持相对平稳。我使用 Oracle Java 和 OpenJDK 对此进行了测试。我尝试使用设置 MALLOC_ARENA_MAX=4 的推荐解决方案,但这没有效果。JVM中是否还有其他我不知道的事情发生,有没有办法阻止它?
设置:
- CentOS 7.4.1708(2G 内存,4 个处理器)
- 甲骨文 Java 8u162
- OpenJDK 1.8.0.212
- glibc 2.17
解决方案
JVM中是否还有其他事情发生
是的。垃圾收集、JIT 编译、类加载/卸载、日志记录、I/O 等。更多详情请点击此处。
Java 进程的 RSS 可以轻松上下数百兆字节——“几兆”通常根本不是问题。要查找从何处分配本机内存,请打开本机内存跟踪功能和/或使用async-profiler,如本答案中所述。
推荐阅读
- html - 负数 (CSS) 被编译为正数
- ruby - 如何将数组转换为字符串?
- python - 带有所有附加功能的“pip install”
- c++ - 小数作为 unordered_map 的键
- firebase - FlutterFire Crashlytics 错误:配置项目“:app”时出现问题
- r - 提取字符串的坐标对
- python - python loadtxt来自许多文件,附加到相同的numpy数组中
- python - 获取随机生成数学计算内容的Python代码
- aws-iot - 如何限制 AWS-IoT 事物发布/订阅 AWS IoT-Core 中的某些主题?
- postgresql - 服务器和 postgresql 在 Docker `getaddrinfo ENOTFOUND` 上运行时无法连接