gpt4 book ai didi

java - 如何为java进程分配合适的RAM量?

转载 作者:太空宇宙 更新时间:2023-11-04 13:58:52 25 4
gpt4 key购买 nike

我有一种感觉,几乎不可能精确控制 java 进程将使用多少 RAM 内存。最好的例子是 Eclipse,你可以使用 -Xms256m -Xmx512m 来表示要使用的内存至少为 256m(因为低于这个值肯定会出现 OOM 错误),并且堆不应该大于 512m(但这仅占堆,进程内存可以达到 800m 甚至更大的值)

我还感觉 90% 的情况下,一两个小时后您的堆将始终达到 -Xmx 值,无论它是什么。再一次,最好的例子是 Eclipse:使用 -Xmx512m 运行它,它的进程将使用大约 800MB 的 RAM。使用 -Xmx1024m 再次运行它,两小时后,在完全相同的条件下完全相同的进程将使用大约 1200MB 或 RAM。

我的结论是,从本质上讲,java 进程是贪婪的,并且它们总是会使用允许的内存,无论其上限有多高(我相信在 java 热点上默认情况下无论如何都不能大于 2 或 3GB)。

当我阅读相关问题如How to calculate (and specify) the total memory space allowed for java process?时,我可以看到,至少在问题提出之前,每个人都像我一样进行,每次出现内存问题时都会将 -Xmx 值提高一点。但这个问题是从 2010 年开始的。我不敢相信,在 2015 年,java 进程不可能是合理的,并尝试释放尽可能多的内存,而不是吃掉任何允许的内存,甚至更多?

最佳答案

超出 XMX 范围的内存可能是永久内存空间 (PermGen),它位于 HEAP 内存之外,由 XMS/XMX 控制。

我通常尝试这样设置:

-XX:PermSize=256M
-XX:MaxPermSize=256M

我做的另一件事是将 Xmx 和 Xmx 设置为其最大值。所以它已经分配了 Eclipse 将使用的整个 HEAP 空间(加上 permgen)

下面是一篇很棒的博客文章,其中提供了有关 eclipse 的 mem 配置的一些提示:

http://devwithpassion.com/handrus/boost-eclipse-performance-also-works-for-zendstudio/

关于java - 如何为java进程分配合适的RAM量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29517956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com