【发布时间】:2011-06-28 22:40:58
【问题描述】:
我想在我的 VPS 上运行一个用 java 编写的非常简单的机器人。 我想将 jvm 内存限制为 10MB(我怀疑它是否需要更多)。
我正在使用以下命令运行机器人:
java -Xms5M -Xmx10M -server -jar IrcBot.jar "/home/jbot"
但是top 显示为 java 保留的实际内存是144m(或者我在这里解释错了吗?)。
13614 jbot 17 0 144m 16m 6740 S 0.0 3.2 0:00.20 爪哇
有什么想法可以在这里出错吗?
Java 版本“1.6.0_20”Java(TM) SE 运行时环境(内部版本 1.6.0_20-b02)Java HotSpot(TM) 客户端 VM(内部版本 16.3-b01,混合模式)
顺便说一句。我正在运行 CentOS - 如果重要的话。
编辑: 谢谢您的回答。
我真的不能接受其中任何一个,因为事实证明问题出在我选择编写程序的语言上,而不是 JVM 本身。
【问题讨论】:
-
java 版本“1.6.0_20”Java(TM) SE 运行时环境(内部版本 1.6.0_20-b02)Java HotSpot(TM) 客户端 VM(内部版本 16.3-b01,混合模式)
-
您可以编辑您的问题以澄清(例如,使用上面评论中的信息)。只需使用问题下方的“编辑”链接即可。
-
知道 'top' 到底显示了什么是一个好的开始,除了堆大小选项和 java 也有几个不同的内存池。
-
问题不在于语言。如果您尝试降低进程内存,请尝试将堆栈大小、perm gen 等设置为较低的值。如果您切换到更适合精简应用程序的替代 JVM(非 Sun / Oracle),则可能会获得更多收益。
-
另外,虽然您不必接受任何答案。一个有效的答案不必“给你你想要的”——你想将你的进程大小减少到 10 MiB,这并不容易——你应该接受给你该信息的答案。