关于增加 JVM 的堆大小

Posted

技术标签:

【中文标题】关于增加 JVM 的堆大小【英文标题】:about increasing heap size of JVM 【发布时间】:2012-04-04 23:46:53 【问题描述】:

我已经使用线程开发了聊天应用程序。但是当我启动我的应用程序系统时,它的运行速度非常慢,有时会出现堆满的异常。我想增加 Java 虚拟机的堆大小。我该怎么做?

【问题讨论】:

这可能对你有帮助***.com/questions/880855/… 【参考方案1】:

只需增加 JVM 的堆大小即可。所有 Java 应用程序,即使是简单的应用程序,都会消耗大量内存。看看这个article 详细解释如何增加应用程序的可用内存量;基本上,当您调用java 命令时,您需要向 JVM 传递几个额外的参数,如下所示:

java -Xms64m -Xmx256m HelloWorld

在上述命令中,我是说HelloWorld 程序的初始堆大小应为 64MB,最大为 256MB。尝试使用这些值并稍微调整一下,直到找到适合您的应用程序的值组合。

【讨论】:

【参考方案2】:

您可以增加堆大小,但更大的问题是“我为什么会得到那个异常?”如果您的应用程序没有正确清理自己,那么增加堆大小只会延迟不可避免的情况。

您需要使用 Visual VM 检测您的应用程序并查看发生了什么。与简单地增加堆大小相比,这将为您提供更多前进的道路。

【讨论】:

【参考方案3】:

在启动应用时将-Xmx100m 添加到命令中。这将为您提供 100 MB 堆(您可以更改数量)。

聊天应用程序需要的比标准堆大小更多,这听起来很奇怪...

【讨论】:

我的聊天应用有点大,包括更多功能。我有我的应用程序的可执行 jar。那我该怎么做呢? java -Xmx100m -jar yourjar.jar 之类的东西应该这样做。 'Functionality' 不一定会占用堆空间。类被加载到堆的“PermGen”部分。我认为默认情况下您有 64MB 堆。这是很多数据。【参考方案4】:

块引用

大型服务器应用程序经常遇到两个问题 默认值。一是启动缓慢,因为初始堆很小,而且 必须在许多主要集合上调整大小。一个更紧迫的问题 是默认的最大堆大小对于大多数人来说太小了 服务器应用程序。

块引用

您可以使用这些参数通过命令提示符启动程序 java -Xms64m -Xmx256m 聊天程序。 这里 Xms64m = 64mb 初始堆大小 Xmx256m = 256mb 最大堆大小

【讨论】:

谢谢。这就是正在发生的事情。我的服务器需要时间来响应。

以上是关于关于增加 JVM 的堆大小的主要内容,如果未能解决你的问题,请参考以下文章

减少 JVM 中未使用的堆大小

Android中JVM的堆大小[重复]

如何增加.NET 的堆大小? [复制]

如何增加android应用程序的堆大小?

在 Linux 机器上增加堆大小

6个重要的JVM性能参数