执行多线程程序时出现以下错误
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.OutOfMemory错误: Java heap space,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33255792/