Java进程使用的RAM比分配的多?
基本上,我在Centos 6.2 16GB系统上运行minecraft服务器 我通过rtoolkit启动我的服务器,现在我指定它使用12GB,但它使用的muc比这多,我不知道为什么。 我运行以下命令来运行jar文件:Java进程使用的RAM比分配的多?,java,linux,memory,centos,minecraft,Java,Linux,Memory,Centos,Minecraft,基本上,我在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.U
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。比我分配的多得多。这会导致进程占用大量内存,导致系统崩溃
我可能在这里犯了一个愚蠢的错误,但如果有人能解释一下这种情况,我将不胜感激
非常感谢。JVM中很少有其他内存使用者:
- 在64位操作系统上。5000个线程(不太可能,但如果这是一个服务器)可以填补分配堆的12Gib和已用内存的17Gib之间的缺口
- 本机代码有自己的堆
- 第二个命令行中没有提到PermGen设置
顺便说一句,16GB是17179000000字节。另一种可能的解释(除了线程堆栈、permgen和本机堆之外)是Minecraft服务器可能使用大型内存映射文件,或者类似的东西