线程“JavaFX Application Thread”中的异常java.lang.OutOfMemoryError:Java堆空间

时间:2014-10-28 10:38:08

标签: java eclipse multithreading javafx

当我使用javaFx应用程序的时间较长时,我得到了异常,因为我的应用程序运行速度非常慢。

线程中的异常" JavaFX应用程序线程" java.lang.OutOfMemoryError:Java堆空间     at 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

如何解决此异常?

感谢。

1 个答案:

答案 0 :(得分:1)

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

通过指定 -Xmx -XX:MaxPermSize 等参数,在Java虚拟机(JVM)启动期间设置这些区域的大小。在您的情况下,您通过指定-Xmx参数允许堆大小增长到512米。

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

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

-Xmx1024m