java.lang.OutOfMemory错误: Java heap space

标签 java multithreading out-of-memory heap-memory

执行多线程程序时出现以下错误

java.lang.OutOfMemoryError: Java heap space

上述错误发生在其中一个线程中。

  1. 据我所知,堆空间仅被实例变量占用。如果这是正确的,那么为什么运行良好一段时间后会出现此错误,因为实例变量的空间是在对象创建时分配的。

  2. 有什么办法可以增加堆空间吗?

  3. 我应该对程序进行哪些更改才能占用更少的堆空间?

最佳答案

如果你想增加堆空间,可以使用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/

相关文章:

java - 通过 apache-poi 更改 Excel 中单元格的值

java - 使用 SimpleXml 无法解析日期

c# - 动态创建线程

scala - Scala 中的范围和内存问题

java - 如何在 Hibernate/JPA 中使用 xml 编写命名查询?

java - 基本英制转换问题

java - Java 中的同步银行模拟器

java - 创建和使用 String 对象来锁定线程同步是一个好习惯吗?

c - 循环调用realloc的缺点

android - 扩充布局时出现 OutOfMemoryError