问题标签 [out-of-memory]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
9976 浏览

java - 运行包中的所有测试时出现 JUnit java.lang.OutOfMemoryError

在一个包中加载所有单元测试时,make 任务会抛出 java.lang.OutOfMemoryError: Java heap space 错误。

但是,如果我在每个子包中运行所有测试,所有测试都会加载并完成。只有当我尝试运行父包中的所有测试时才会发生 OOM 错误。

我认为这个问题不应该通过调整 VM 参数来解决。我尝试增加最大堆和烫发大小,但并没有解决问题。

这使我相信在不同包中的加载测试之间存在一些垃圾收集问题,或者正在进行一些过于急切的类加载。

是否有可以解决这些问题的 JUnit 设置,还是必须通过在测试用例中更改或添加代码来解决问题?

0 投票
2 回答
3771 浏览

java - 如果碰巧内存不足,是否可以监视 jboss?

有时当我多次重新部署战争时,jboss 给出java.lang.OutOfMemoryError: PermGen space错误,是否可以使用不在 jboss 内部运行的其他 Java 程序监视 jboss,以确保它没有运行内存不足,如果是,然后自动重启jboss?

0 投票
3 回答
1395 浏览

java - 如何最好地输出大型单行 XML 文件(使用 Java/Eclipse)?

我们有一个将大型 XML 文件的内容输出到 System.out 的过程。

当这个输出打印得很漂亮(即:多行)时,一切正常。但是当它在一条线上时,Eclipse 会因 OutOfMemory 错误而崩溃。任何想法如何防止这种情况?

0 投票
3 回答
7729 浏览

r - 存储和使用对于内存来说太大的数据帧的最佳实践?

我正在处理一个大型数据框,并且遇到了 RAM 限制。此时,我可能需要使用磁盘上的序列化版本。有一些包可以支持内存不足操作,但我不确定哪一个适合我的需要。我更愿意将所有内容都保存在数据框中,因此该ff软件包看起来令人鼓舞,但仍然存在我无法解决的兼容性问题。

当您意识到您的数据已达到内存不足的规模时,首先要使用的工具是什么?

0 投票
4 回答
21709 浏览

java - 如何模拟内存不足:请求的数组大小超过 VM 限制

我使用了sun 网站的 Out Of Memory 帮助。它被引用为

内存不足:请求的数组大小超过 VM 限制

这表明应用程序试图分配一个大于堆大小的数组。例如,如果应用程序尝试分配一个 512MB 的数组,但最大堆大小为 256MB,则会抛出此错误。在大多数情况下,问题可能是堆大小太小,或者错误导致应用程序尝试创建一个大小被计算为错误地大的数组。

我试图通过

在我的机器上

但是上面的生产线正在生产

我错过了什么?

更新: 我的 java 版本是

0 投票
5 回答
12745 浏览

java - 为什么“java.lang.OutOfMemoryError: Java heap space”没有被捕获?

我在 Java Web 应用程序中有一个线程导致java.lang.OutOfMemoryError: Java heap space exception,但 try/catch 块没有捕获错误。

示例代码:

输出:

背景:

我最近接手了这个 Java 项目,我正在努力跟上 Java 和这个项目的速度。我是一名 C# 开发人员,所以我还不熟悉这个项目或 Java。我知道我可以使用 -Xmx 设置修复错误,但我有兴趣捕获此错误,以便记录它。该错误未显示在任何日志文件中,并且输出在 Eclipse 中以调试模式显示在控制台中。

0 投票
9 回答
56658 浏览

java - Maven 抛出“java.lang.OutOfMemoryError”

我正在使用“mvn install”编译一个开源项目,但最终以java.lang.OutOfMemoryError: Java heap space. 我试图执行java -Xmx256m,但输出是 java 概要,表明它是一个无效命令。

我正在使用jdk1.5.0_08,任何想法为什么会发生这种情况?

谢谢,

0 投票
6 回答
3715 浏览

c# - 我应该在使用大对象堆后立即调用 GC.Collect 以防止碎片吗

我的应用程序对大对象进行了大量的二进制序列化和压缩。未压缩的序列化数据集约为 14 MB。压缩后约为 1.5 MB。我发现每当我在我的数据集上调用 serialize 方法时,我的大型对象堆性能计数器就会从 1 MB 以下跃升至大约 90 MB。我也知道,在一个负载相对较重的系统下,通常在运行一段时间(几天)后,这个序列化过程发生了几次,当调用这个序列化方法时,应用程序会抛出内存异常,即使有似乎是足够的内存。我猜碎片化是问题所在(虽然我不能说我 100% 确定,但我已经很接近了)

我能想到的最简单的短期修复(我想我正在寻找短期和长期答案)是在我完成序列化过程后立即调用 GC.Collect。在我看来,这将从 LOH 中垃圾收集对象,并且可能会在其他对象添加到它之前这样做。这将允许其他对象紧紧地贴在堆中的剩余对象上,而不会造成太多碎片。

除了这个荒谬的 90MB 分配之外,我认为我没有其他任何使用 LOH 丢失的东西。这种 90 MB 的分配也比较少见(大约每 4 小时一次)。当然,我们仍然会有 1.5 MB 的数组,可能还有一些其他更小的序列化对象。

有任何想法吗?

由于良好的反应而更新

这是我完成工作的代码。实际上,我已经尝试将其更改为压缩 WHILE 序列化,以便序列化同时序列化为流,但我没有得到更好的结果。我还尝试将内存流预分配到 100 MB,并尝试连续两次使用相同的流,无论如何 LOH 都会上升到 180 MB。我正在使用 Process Explorer 来监控它。这太疯狂了。我想接下来我会尝试 UnmanagedMemoryStream 的想法。

如果你不愿意,我会鼓励你们尝试一下。它不必是这个确切的代码。只需序列化一个大数据集,你就会得到令人惊讶的结果(我的有很多表,大约 15 和很多字符串和列)

尝试使用 UnmanagedMemoryStream 进行二进制序列化后更新

即使我序列化为 UnmanagedMemoryStream,LOH 也会跳到相同的大小。看来无论我做什么,调用 BinaryFormatter 来序列化这个大对象都会使用 LOH。至于预分配,它似乎没有多大帮助。说我预分配说我预分配 100MB,然后我序列化,它将使用 170MB。这是代码。比上面的代码还要简单

中间的 GC.Collect() 只是用来更新 LOH 性能计数器。您将看到它将分配正确的 100 MB。但是当您调用序列化时,您会注意到它似乎将它添加到您已经分配的 100 个之上。

0 投票
4 回答
1602 浏览

hibernate - 带有 Criteria.scroll() 的 Postgresql OutOfMemory 在 Hibernate 中具有 2M 条记录

我在包含 2M 记录的数据库上的 PostgreSQL 上运行 Criteria.scroll()。内存不断增加,最后会产生 OutOfMemoryException。请你能建议如何解决这个问题。

Postgresql DB 版本:8.4 使用的 Postgresql 驱动程序:postgresql-8.4-701.jdbc4.jar

PostgreSQL 中的 Hibernate scroll() 是否存在一些已知问题?

感谢任何指导/建议。

0 投票
4 回答
9364 浏览

.net - WPF中的win32窗口

最近我们的应用程序遇到了一个奇怪的问题。

应用程序在WPF窗口中有一个win32窗口,当调整WPF窗口大小时,出现问题。

堆栈跟踪:

另外,我找到了一些相关链接:

相关A

相关B

  1. 有没有办法避免或处理这个问题?

  2. 如何找出真正的问题?

  3. 从调用堆栈中,我们能否确定问题出在 .NET Framework 上?

感谢您的回答或评论!