当我使用 javaFx 应用程序时间较长时,我会遇到如下异常,并且我的应用程序运行速度非常慢。
线程“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)\ ...
虚拟机参数是:
-XstartOnFirstThread
-XX:MaxPermSize=256m
-Xms128m
-Xmx512m
如何解决这个异常?
谢谢。
最佳答案
Java 应用程序可以使用有限的内存。此限制是在应用程序启动期间指定的。为了使事情变得更复杂,Java 内存被分为两个不同的区域。这些区域称为堆空间和永久代。
这些区域的大小是在 Java 虚拟机 (JVM) 启动期间通过指定 -Xmx 和 -XX:MaxPermSize 等参数来设置的。在您的情况下,您通过指定 -Xmx 参数允许堆大小增长到 512m。
因此,当您尝试向堆空间区域添加更多数据,但没有足够的空间时,将会触发“java.lang.OutOfMemoryError: Java heap space”错误。
第一个解决方案简单明了 - 当您用完特定资源时,您应该增加此类资源的可用性。在您的情况下:当您的应用程序没有足够的 Java 堆空间内存来正常运行时,修复它就像在 JVM 启动配置中增加堆空间一样简单,例如增加到 1GB,如下所示:
-Xmx1024m
关于java - 线程中出现异常 "JavaFX Application Thread"java.lang.OutOfMemoryError : Java heap space,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26606164/