2014-10-28 83 views
0

当我使用javaFx应用程序更长的时间,然后我得到异常,如下所示,我的应用程序进行得非常缓慢。线程“JavaFX应用程序线程”中的异常java.lang.OutOfMemoryError:Java堆空间

异常在线程 “的JavaFX应用程序线程” java.lang.OutOfMemoryError:Java堆空间 在java.util.Arrays.copyOfRange(Arrays.java:2694) 在java.lang.String中(String.java :203) 在java.lang.StringBuilder.toString(StringBuilder.java:405)\ ...

VM参数是:

-XstartOnFirstThread

-XX:MaxPermSize参数=256米

-Xms128m

-Xmx512m

如何解决这个例外?

谢谢。

+0

增加你堆到1G -Xmx1G(甚至更多基于应用程序所做的事情,并且提供了应用程序运行时的容量)。即使它不起作用,你也需要分析你的应用程序。 – SMA 2014-10-28 10:40:20

+0

我试过这个不行。 – 007 2014-10-28 10:51:01

+1

尝试分析你的应用程序。另外如果你不介意你能不能介绍你的应用的功能(粘贴问题中的所有内容)?你认为大部分记忆被吃掉了吗?有没有泄漏等等? – SMA 2014-10-28 11:01:52

回答

1

允许Java应用程序使用有限的内存。此限制在应用程序启动过程中指定。为了使事情更加复杂,Java内存被分成两个不同的区域。这些区域被称为堆空间和permgen。 MaxPermSize参数:

这些区域的大小是由指定的参数,如-Xmx-XX Java虚拟机(JVM)发射期间设置。在你的情况下,通过指定-Xmx参数允许堆大小增长到512m。

因此 - 当您尝试向堆空间区域添加更多数据但是没有足够空间时,将触发“java.lang.OutOfMemoryError:Java堆空间”错误。

第一种解决方案很简单明显 - 当您用完特定资源时,应该增加此类资源的可用性。你的情况:当你的应用程序没有足够的Java堆存储空间的正常运行,修复它是如下在JVM启动配置增加堆空间,例如1GB一样容易:

-Xmx1024m