Java是编写简单的机器人程序/守护程序的好语言吗(当RAM有限时!)?
我有一个VPS(最大512 RAM),我想在它上运行一个简单的IRC机器人。 我用JAVA编写了它,但结果表明JVM消耗了大量144 MB的ram。 与JVM不同,bot本身对内存的需求非常低 因此,问题是: Java适合这个任务吗?我没有在这台服务器上运行任何其他java应用程序,所以这看起来完全是RAM浪费。 用c/c++重写所有东西会更好吗?还是有一种方法可以用很少的JVM内存开销运行小型java程序 为了确保我们没有重复问题:-Xms和-Xmx没有帮助,请参阅:Java是编写简单的机器人程序/守护程序的好语言吗(当RAM有限时!)?,java,c,jvm,vps,Java,C,Jvm,Vps,我有一个VPS(最大512 RAM),我想在它上运行一个简单的IRC机器人。 我用JAVA编写了它,但结果表明JVM消耗了大量144 MB的ram。 与JVM不同,bot本身对内存的需求非常低 因此,问题是: Java适合这个任务吗?我没有在这台服务器上运行任何其他java应用程序,所以这看起来完全是RAM浪费。 用c/c++重写所有东西会更好吗?还是有一种方法可以用很少的JVM内存开销运行小型java程序 为了确保我们没有重复问题:-Xms和-Xmx没有帮助,请参阅: JVM是巨大的。用C或C
JVM是巨大的。用C或C++写的占用空间要小得多。
或者查看较小的虚拟机,如,很明显,在VPS上运行整个JVM的唯一目的是运行一个应用程序的单个实例,而该应用程序的内存占用应该很小,这样做太过分了。另一方面,如果你没有在盒子上运行任何其他东西,那么就没有必要担心内存使用的水平:为什么要重写一些有效的东西 当然,我猜这是一个个人“为了好玩”的项目,所以你可以看看一些比较硬数据的基准,如果你有编程能力在C/C++中重写你的机器人而不引入大量内存泄漏,那么几乎可以肯定内存占用会更少
也就是说,您可以在上找到备用JVM的列表,其中一些JVM可能能够以较低的内存占用率运行。操作系统上是否存在内存压力。Java可能不会释放内存,直到有理由这样做(即机器内存不足)您是否需要其他约350 Mb的内存来完成任何操作?如果JVM占用150Mb,其他东西占用400Mb,那么您就有问题了。如果不是,你就很好。使用大量未使用的ram运行与运行臃肿的程序一样是一种巨大的浪费。当然,我需要VPS的所有ram——否则我不会问这个问题,你已经被告知(正确或错误地)关于另一个问题(a)你误解了
top
的结果,您的进程使用的是16MB的RAM,而不是144MB;(b)java
没有忽略-Xmx
,您也误解了它的含义。在理解这些数字的含义之前,您无法真正评估Java与其他语言的对比,因此我认为您需要在另一个问题上处理这些问题。证明你的进程正在使用144MB的RAM,而不是像Peter Lawrey所说的那样分配144MB的虚拟地址空间。锤子是一个很好的工具吗?如果那是你唯一的工具。。。