java.lang.OutOfMemoryError : 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.OutOfMemoryError : Java heap space,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1596009/

相关文章:

java - 如何在java中拆分paint swing方法?

winforms - 任务完成后才显示进度条

r - 在大型数据库中的 R 中创建列

Java OutOfMemory 异常 : mmap error on loading zip file

java - 设置一个 JTree 聚焦

java - JPA 枚举类型映射。最佳方法

c++ - 使用 C++ async 进行并行编程

java - 其他多线程框架中理想的线程池大小

java - ByteArrayOutputStream 对 RAM 内存的极端使用

java - 在 HBase 中将 bytes[] 转换为字符串