RSS内存在空闲Java进程上增长

时间:2019-07-01 19:04:58

标签: 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

1 个答案:

答案 0 :(得分:0)

  

JVM中是否还有其他事情发生

是的。垃圾回收,JIT编译,类加载/卸载,日志记录,I / O等。更多详细信息here

Java进程的RSS可以轻松地上下浮动数百兆字节-“几个兆”通常根本不是问题。要查找从哪里分配本机内存,请打开Native Memory Tracking功能和/或按照async-profiler中的说明使用this answer