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

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

【问题讨论】:

标签: java jvm


【解决方案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 最大堆大小

      【讨论】:

      • 谢谢。这就是正在发生的事情。我的服务器需要时间来响应。
      猜你喜欢
      • 2010-11-29
      • 1970-01-01
      • 1970-01-01
      • 2013-01-01
      • 2011-07-24
      • 1970-01-01
      • 2011-09-21
      • 2012-04-17
      相关资源
      最近更新 更多