基本上我在Centos 6.2 16GB系统上运行一个Minecraft服务器
我通过rtoolkit启动以启动我的服务器,现在我分配它使用12GB但是它使用的muc超过那个而且我不知道为什么。 我运行此命令来运行jar文件:
java -Xmx30M -Xms30M -XX:MaxPermSize=40M -jar Minecraft_RKit.jar USER:PASS
然后使用以下命令运行该过程:
java -Xms12288M -Xmx12288M -Djline.terminal=jline.UnsupportedTerminal -jar /home/craftbukkit.jar nogui
现在,如果我查看我的Webmin模块,我可以看到它正在使用18025792 kB的RAM。超过我指定的方式。这导致了使用如此多内存的进程,它只会使系统崩溃。
我可能在这里犯了一个愚蠢的错误,但我真的很感激,如果有人能够对这种情况有所了解。
非常感谢。
答案 0 :(得分:3)
JVM中很少有其他内存使用者:
在64位操作系统each thread needs at least a MiB of memory上。 5千个线程(不太可能,但如果这是一个服务器)可以填补12 GiB分配堆和17 GiB已用内存之间的差距
本机代码有自己的堆
第二个命令行中未提及PermGen设置
答案 1 :(得分:0)
您正在设置最大堆大小,这通常是最大但不是所有内存使用量。
你有线程本地堆栈(这可以添加到GB,你有很多),共享库代码和C库使用的任何内存。
BTW 16 GB是17,179,000,000字节。
答案 2 :(得分:0)
另一个可能的解释(除了线程堆栈,permgen和本机堆)是Minecraft服务器可能正在使用大型内存映射文件,或类似的东西。