java - 空闲 Java 进程上的 RSS 内存不断增长

标签 java memory memory-management memory-leaks jvm

我正在运行几个用 java 编写的小型服务器。其中一个监听标准套接字,其余的则使用 ActiveMQ 相互通信。我注意到一些奇怪的事情,如果我让系统空闲几个小时,RSS 内存要么会增加几到几十兆,要么会缩小几到几十兆。我使用 jconsole 来查看服务器中发生的情况,但内存使用和对象创建保持相对平稳。我使用 Oracle Java 和 OpenJDK 对此进行了测试。我尝试使用建议的解决方案设置 MALLOC_ARENA_MAX=4,但这没有效果。 JVM 中是否还有其他我不知道的事情正在发生,有没有办法阻止它?

设置:

  • CentOS 7.4.1708(2G 内存,4 个处理器)
  • Oracle Java 8u162
  • OpenJDK 1.8.0.212
  • glibc 2.17

最佳答案

Is there something else going on in the JVM

是的。垃圾收集、JIT编译、类加载/卸载、日志记录、I/O等。更多详情here .

Java 进程的 RSS 可以轻松地上下数百兆字节 - “几兆”通常根本不是问题。要查找 native 内存的分配位置,请打开 Native Memory Tracking功能和/或使用async-profilerthis answer 中所述.

关于java - 空闲 Java 进程上的 RSS 内存不断增长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56841114/

相关文章:

java - 计算二维数组中相邻元素的程序给出不一致的结果

c# - 从 SqlDataReader 读取字符串时内存不足

memory - Octave:稀疏矩阵上的 std 内存消耗太大

language-agnostic - 什么时候不使用垃圾收集?

c++ - 释放内存时出错

java - ListView 未从数组填充

java - 应用服务器和JVM是什么关系?

java - 在数据库中以 BLOB 形式存储的 img 标签中显示图像

memory - ABAP 在哪个 session /内存中存储静态属性值?

c++ - 载体如何清理自己? (或者他们呢?)