我想在我的VPS上运行一个用java编写的非常简单的bot.我想限制jvm内存让我们说10MB(我怀疑它还需要更多).
我正在使用以下命令运行bot:
java -Xms5M -Xmx10M -server -jar IrcBot.jar"/ home/jbot"
但是top显示为java保留的实际内存是144m(或者我在这里解释错误吗?).
13614 jbot 17 0 144米 16米6740秒0.0 3.2 0:00.20 java的
任何想法在这里可能是错的?
Java版"1.6.0_20"Java(TM)SE运行时环境(版本1.6.0_20-b02)Java HotSpot(TM)客户端VM(版本16.3-b01,混合模式)
BTW.我正在运行CentOS - 如果重要的话.
编辑:谢谢你的回答.
我不能真正接受它们中的任何一个,因为事实证明问题在于我选择编写程序的语言,而不是JVM本身.
Mic*_*ael 10
-Xmx指定最大Java 堆分配(-Xms指定最小堆分配).Java进程有自己的开销(实际的JVM等),加上加载的类和perm gen空间(set via -XX:MaxPermSize=128m)也位于该值之外.
将您的堆分配视为Java的"内部工作空间",而不是整个流程.
尝试实验,你会明白我的意思:
java -Xms512m -Xmx1024m ...
Run Code Online (Sandbox Code Playgroud)
此外,尝试使用JConsole或JVisualVM等工具(两者都随Sun/Oracle JDK一起提供),您将能够看到实际堆使用情况的图形表示(以及用于约束大小的设置).
最后,正如@Peter Lawrey所说的那样,常驻内存是关键数字 - 在你的情况下,JVM只使用16 MiB RSS(根据'top').只要JVM的堆没有被推入交换(非RAM),共享/虚拟分配就不会引起任何问题.同样,正如我在一些评论中所述,还有其他JVM可用 - "Java"能够在低资源或嵌入式平台上运行.
| 归档时间: |
|
| 查看次数: |
19309 次 |
| 最近记录: |