我做了一个服务器端应用程序,它使用了18mb的非堆和大约6MB的head,最大为30MB。我用-Xms和Xmx设置了堆的最大值,问题是当我在ubuntu服务器上运行程序时,它需要大约170mbs而不是18+30或者至少100Mbs的最大值。有人知道怎么让VM只有100MB吗?
发布于 2011-06-16 02:56:07
JVM使用堆和其他内存,如线程堆栈和共享库。共享库可以相对较大,但除非实际使用,否则它们不会使用实际内存。如果您运行JVM,它们是在它们之间共享的,但是您在进程信息中看不到这一点。
在现代个人电脑中,1 GB内存的成本约为100美元,因此减少每一MB内存可能不会被视为像过去那样重要。
发布于 2011-06-16 03:02:19
对你的评论的回应
我已经用Jconsole和VMvisual做了一些测试。Xmx 40mbs Xms 25。问题是,我被限制在512MB,因为它的VPS,我现在不能支付它。另一件事是,对于每个100MB的内存,我可以让至少3个进程运行。
问题是,你走错了路。不要试图让你的虚拟机变得非常小,这样你就可以运行3个虚拟机。将所有内容合并到一个虚拟机中。如果你有512个内存,那么用256MB的堆做一个虚拟机,让它做所有的事情。您可以在单个VM中拥有10个或100个线程。在大多数情况下,与尝试运行许多小型虚拟机相比,这样做的性能更好,使用的总内存也更少。
https://stackoverflow.com/questions/6362708
复制相似问题