如何解决Java内存占用
| 我做了一个服务器端应用程序,它使用18mb的非堆和大约6mbs的头部,最大30mbs。我用-Xms和Xmx设置了堆的最大值,问题是当我在ubuntu服务器上运行该程序时,它需要大约170mbs的内存,而不是18 + 30或max100的至少100Mbs。有人知道如何使VM仅获得100MB?解决方法
JVM使用堆以及线程堆栈和共享库之类的其他内存。共享库可能相对较大,但是除非实际使用,否则它们不会使用实际内存。如果运行JVM,它们将在它们之间共享,但是您将无法在进程信息中看到它。
在现代PC中,1 GB的内存成本约为100美元,因此减少最后每MB的空间似乎并不像以前那么重要。
, 回应您的评论
我用Jconsole做过一些测试
和VMvisual。 Xmx 40mbs Xms 25。
问题是,iam仅限于
512mbs,因为它的VPS,我无法支付
为此。另一件事是
每个100mbs我至少可以放3个
进程正在运行。
问题是,您正在以错误的方式进行操作。不要尝试使您的VM超小,这样您就可以运行3个VM。将所有内容组合到1个VM中。如果您有512个内存,则用256MB的堆制作1个VM,然后让它做所有事情。单个VM中可以有10或100个线程。在大多数情况下,与尝试运行许多小型VM相比,此方法性能更好,总内存更少。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。