2012-03-20 102 views
3

我使用线程开发了聊天应用程序。但是当我开始我的应用程序系统行为非常缓慢,有时会发生堆已满的异常。我想增加Java虚拟机的堆大小。我该怎么做?关于增加JVM的堆大小

+1

这可能对你有帮助http://stackoverflow.com/questions/880855/increase-the-java-heap-size-permanently – kunal 2012-03-20 13:48:41

回答

2

-Xmx100m添加到启动应用程序时的命令中。这会给你100 MB的堆(你可以改变数字)。

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

+0

我聊天应用程序有点巨大,包括更多的功能。我有我的应用程序的可执行jar。那我该怎么做呢? – Vinay 2012-03-20 13:49:01

+0

像'java -Xmx100m -jar yourjar.jar'应该这样做。 – 2012-03-20 13:57:48

+0

'功能'不一定会占用堆空间。类被加载到堆的'PermGen'部分。我认为你默认有64MB堆。这是很多数据。 – 2012-03-20 13:59:18

3

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

你需要用Visual VM来测试你的应用程序,看看发生了什么。这会给你更多的路径,而不仅仅是增加堆的大小。

+0

+1不要只治疗症状!治愈原因! – Terraego 2012-03-20 14:15:14

4

只需增加JVM的堆大小即可。所有的Java应用程序,甚至简单的应用程序都会占用大量内存。看看这article详细解释如何增加可用于您的应用程序的内存量;基本上你需要一些额外的参数传递给JVM,当你调用java命令,就像这样:

java -Xms64m -Xmx256m HelloWorld 

在上面的命令,我说,HelloWorld程序应该有一个初步的堆大小为64MB,最大为256MB。尝试使用这些值并调整它们直到找到适用于您的应用程序的值的组合。

1

块引用

大型服务器应用程序通常会遇到两个问题,这些 默认值。一种是启动缓慢,因为最初的堆很小,并且必须在许多主要集合上调整其大小。 更紧迫的问题是,大多数 服务器应用程序的默认最大堆大小不合理地较小。

块引用

你可以通过命令提示符下使用这些参数 的java -Xms64m -Xmx256m chat_program启动程序。 这里Xms64m = 64MB初始堆大小 和Xmx256m = 256MB最大堆大小

+0

谢谢。这是发生的事情。我的服务器需要时间来回应。 – Vinay 2012-03-20 14:12:20