我正在运行几个用Java编写的小型服务器。有一个侦听标准套接字,其余的则使用ActiveMQ相互通信。我注意到一个奇怪的地方,如果我将系统闲置几个小时,RSS内存要么增长几到几十兆,要么缩小几到几十兆。我使用jconsole来查看服务器中发生的情况,但是内存使用情况和对象创建相对保持平稳。我同时使用Oracle Java和OpenJDK进行了测试。我尝试使用推荐的设置MALLOC_ARENA_MAX = 4的解决方案,但是没有效果。我不了解的JVM中是否还有其他事情在发生,有没有办法阻止它?
设置:
答案 0 :(得分:0)
JVM中是否还有其他事情发生
是的。垃圾回收,JIT编译,类加载/卸载,日志记录,I / O等。更多详细信息here。
Java进程的RSS可以轻松地上下浮动数百兆字节-“几个兆”通常根本不是问题。要查找从哪里分配本机内存,请打开Native Memory Tracking功能和/或按照async-profiler中的说明使用this answer。