有一天晚上,oom杀手被召唤到一台linux机器上,这台机器已经运行了一段时间,因为总的RAM使用量在某个时候失去了控制。/var/log/messages中的输出让我有点惊讶,因为它显示了rmiregistry进程使用了几乎1G的内存。我们的系统非常简单,只将一个对象绑定到rmiregistry,这只是一个静态方法的集合。因此该对象本身几乎不使用任何内存。在一个正常的系统上,这个进程的大小更像是30M,这在我看来仍然是非常高的。除了加载由绑定对象序列化的类,以及可能以某种方式表示绑定对象之外,rmiregistry进程中实际存储的是什么?我正在使用OpenJDK 1.6.0_33。
发布于 2015-01-12 12:20:35
除了加载由绑定对象序列化的类,以及可能以某种方式表示绑定对象之外,
进程中实际存储的是什么?
没什么。它只包含一个将String映射到Remote的哈希表,这意味着加载Remote的类(通常是存根)和它所依赖的所有类,递归地直到关闭。其余的都是JVM开销。
https://stackoverflow.com/questions/27894959
复制相似问题