当我使用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
如何解决此异常?
感谢。
答案 0 :(得分:1)
允许Java应用程序使用有限的内存。在应用程序启动期间指定此限制。为了使事情变得更复杂,Java内存被分为两个不同的区域。这些区域称为堆空间和permgen。
通过指定 -Xmx 和 -XX:MaxPermSize 等参数,在Java虚拟机(JVM)启动期间设置这些区域的大小。在您的情况下,您通过指定-Xmx参数允许堆大小增长到512米。
所以 - 当您尝试将更多数据添加到堆空间区域时,将触发“java.lang.OutOfMemoryError:Java堆空间”错误,但没有足够的空间。
第一个解决方案很简单明了 - 当您用完特定资源时,应该增加此类资源的可用性。在您的情况下:当您的应用程序没有足够的Java堆空间内存才能正常运行时,修复它就像增加JVM启动配置中的堆空间一样容易,例如如下所示:1GB:
-Xmx1024m