关于增加 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 的堆大小的主要内容,如果未能解决你的问题,请参考以下文章