JVM如何增加堆大小

4

我使用线程开发了一款聊天应用程序。但是当我启动应用程序时,系统会变得非常缓慢,并且有时会出现堆栈已满的异常。我想增加Java虚拟机的堆大小。如何做到呢?


1
这可能对您有所帮助:https://dev59.com/eHNA5IYBdhLWcg3wpfmu - kunal
4个回答

5
只需增加JVM的堆大小。即使是简单的Java应用程序也会消耗大量内存。请查看这篇详细说明如何增加应用程序可用内存量的文章;基本上,在调用java命令时,您需要传递一些额外的参数给JVM,例如:-Xms256m -Xmx512m。请按照格式要求返回结果。
java -Xms64m -Xmx256m HelloWorld

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


3

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

您需要使用Visual VM工具来检查应用程序的情况。这将比简单地增加堆大小更有前进的方向。


2

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

听起来很奇怪,一个聊天应用程序需要超过标准堆大小...


我的聊天应用程序包含更多的功能,有点庞大。我有可执行的JAR文件。那么我该怎么做呢? - Vinay
类似 java -Xmx100m -jar yourjar.jar 这样的命令应该可以实现。 - Mathias Schwarz
“功能”不一定会占用堆空间。类被加载到堆的“PermGen”部分。我认为默认情况下您有64MB的堆。那是很多数据。 - Mathias Schwarz

1

引用

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

引用

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


谢谢。发生的情况是,我的服务器需要一些时间才能响应。 - Vinay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接