3

基本上我在 Centos 6.2 16GB 系统上运行我的世界服务器

我通过 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。比我分配的要多得多。这随后导致进程使用太多内存,以至于系统崩溃。

我可能在这里犯了一个愚蠢的错误,但如果有人能对这种情况有所了解,我将不胜感激。

非常感谢。

4

3 回答 3

3

JVM 中很少有其他内存消费者:

  • 在 64 位操作系统上,每个线程至少需要一个 MiB 的内存。5000 个线程(不太可能,但如果这是一个服务器)可以填补 12 GiB 的分配堆和 17 GiB 的已用内存之间的差距

  • 本机代码有自己的堆

  • 您的第二个命令行中未提及 PermGen 设置

于 2012-07-22T11:26:06.767 回答
0

您正在设置最大堆大小,这通常是最大的但不是所有的内存使用量。

你有线程本地堆栈(如果你有很多,这可以加起来 GB)、共享库代码和 C 库使用的任何内存。

顺便说一句,16 GB 是 17,179,000,000 字节。

于 2012-07-22T11:26:19.390 回答
0

另一个可能的解释(除了线程堆栈、permgen 和本机堆)是 Minecraft 服务器可能正在使用大型内存映射文件或类似的东西。

于 2012-07-22T12:19:09.403 回答