执行多线程程序时出现以下错误
java.lang.OutOfMemoryError: Java heap space
上述错误发生在其中一个线程中。
据我所知,堆空间仅由实例变量占用。如果这是正确的,那么为什么在运行良好一段时间后会出现此错误,因为在创建对象时分配了实例变量的空间。
有没有办法增加堆空间?
我应该对我的程序进行哪些更改以减少它占用的堆空间?
最佳答案
如果你想增加你的堆空间,你可以使用 java -Xms<initial heap size> -Xmx<maximum heap size>
在命令行上。默认情况下,这些值基于 JRE 版本和系统配置。你可以找到more about the VM options on the Java website .
但是,我建议对您的应用程序进行分析,以找出您的堆大小被占用的原因。 NetBeans 有一个 very good profiler包括在其中。我相信它使用 jvisualvm
在引擎盖下。使用分析器,您可以尝试查找在何处创建了许多对象、对象何时被垃圾回收等等。
关于java.lang.OutOfMemoryError : Java heap space,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1596009/