问题标签 [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 投票
1 回答
21118 浏览

java - Windows 上的 IBM Websphere - OutOfMemoryError:无法创建线程

我有一个在 Windows 操作系统上的 IBM Websphere Application Server 上运行的 J2EE 应用程序。

有时我会在 javacore 文件中看到带有以下信息的 OutOfMemoryError 异常。

Java 使用以下配置运行:-Xms512m -Xmx1350m -Xscmx50M

分析javacore文件,线程数只有124个。分析heap dump,heap占用的内存约500Mb。

鉴于相对正常的线程数和堆大小远低于最大值,我试图弄清楚为什么我会看到这个错误?

我不确定这是否有帮助,但这里是 javacore 文件的顶部...

0 投票
3 回答
934 浏览

java - 您对 Tomcat 6 添加 SSL 有何经验?

上周末,我们将 SSL 安全性添加到已经运行了一段时间且没有出现错误的 Tomcat 6 实例。今天早上,机器上的会话数增加后,Tomcat 开始向用户抛出 500 错误。我检查了日志,发现了一个 OutOfMemory 实例,随后出现了几十个与 Google Guice 尝试启动新线程相关的错误。我只能想象随着 SSL 的添加,正在创建的更多线程或某些此类情况正在使用更多内存。我不太确定在哪里或如何使用额外的资源。

我希望那些有在 Tomcat 上使用 SSL 经验的人可以为我指出一些寻找线索的方向。目前我不确定问题可能出在哪里。以下是有关我们的设置和配置的一些统计信息:

-XX:ThreadStackSize=512
初始内存池:128MB
最大内存池:1024MB
线程堆栈大小:512KB

我一直在以各种方式调整这些,试图至少找到一条通往成功的道路。到目前为止,在服务器重新启动后大约 5 分钟,性能开始下降。任何方向将不胜感激。

0 投票
9 回答
9440 浏览

.net - 120 MB CSV 文件的 String.Split() 上的 .NET System.OutOfMemoryException

我正在使用 C# 读取 ~120 MB 纯文本 CSV 文件。最初我通过逐行读取来进行解析,但最近确定首先将整个文件内容读入内存要快几倍。解析已经很慢了,因为 CSV 在引号内嵌入了逗号,这意味着我必须使用正则表达式拆分。这是我发现的唯一一个可靠的工作:

为了在将全部内容读入内存后进行解析,我对换行符进行了字符串拆分,以获取包含每一行的数组。但是,当我对 120 MB 文件执行此操作时,我得到一个System.OutOfMemoryException. 为什么当我的电脑有 4 GB 的 RAM 时它会如此快地耗尽内存?有没有更好的方法来快速解析复杂的 CSV?

0 投票
2 回答
4548 浏览

http - ActiveMQ 5.2.0 + REST + HTTP POST = java.lang.OutOfMemoryError

首先,我是 JMS 和 ActiveMQ 的新手。

我一直在研究一种消息传递解决方案,作为消息生产者的中间件,该消息生产者将通过 HTTP POST 将 XML 消息插入队列。生产者是用 C++ 编写的现有系统,无法修改(因此 Java 和 C++ API 已出局)。

使用“演示”示例和一些试验和错误,我拼凑了一个我想要做的工作示例(在 Windows 框中)。

我在“webapps”下的测试目录中配置的 web.xml 指定从生产者接收到的 HTTP POST 消息将由 MessageServlet 处理。

我在“activemq.xml”中为文本应用添加了一行(“ow”是测试应用目录):

我创建了一个测试脚本来将消息“插入”到运行良好的队列中。

我遇到的问题是,当我继续通过 REST/HTTP POST 插入消息时,ActiveMQ 使用的内存消耗和线程数继续增加(当我有及时的消费者以及缓慢或不存在的消费者时会发生这种情况)。

当内存消耗达到 250MB 左右并且线程数超过 5000(如 Windows 任务管理器中所示)时,ActiveMQ 崩溃,我在日志中看到:

线程“ActiveMQ Transport Initiator:vm://localhost#3564”中的异常 java.lang.OutOfMemoryError:无法创建新的本机线程

就好像 Jetty 正在生成一个新线程来处理每个 HTTP POST,并且该线程永远不会死亡。

我确实看过这个页面:

http://activemq.apache.org/javalangoutofmemory.html

并尝试过,但这并没有解决问题(尽管我也没有完全理解更改的含义)。

有没有人有任何想法?

谢谢!

  • 布鲁斯·罗斯

PS - 我在下面包含了“测试消息生产者”python 脚本,以了解它的价值。我创建了 100 条消息的批次,并继续从命令行手动运行脚本,同时在任务管理器中观察 ActiveMQ 的内存消耗和线程数。

0 投票
4 回答
1466 浏览

.net - 如何在不耗尽所有系统内存的情况下使 .NET 进程耗尽内存

问题很简单我有一个过程,对一些 xml 文件执行 ETL。我们开始得到非常大的 xml 文件,并且我开始得到 OutOfMemoryExceptions。

修复过程相对简单。但是,我想为我的 NUnit 套件进行单元测试,以确保该过程将继续能够处理非常大的文件。然而,实际上我的开发工作站内存不足会减慢我的机器速度,并且非常耗时。在版本控制中存储一个巨大的测试文件也是一个坏主意。如果我可以人为地将进程、线程或应用程序域限制为仅使用固定数量的 ram,比如说 128 兆,我可以进行更小的单元测试,不会让我的工作站屈服。

有什么建议么?我可以 P/Invoke 他们的一些非托管 API 吗?

0 投票
1 回答
540 浏览

.net - GDI+ DashStyle 在 .NET 中引发 OutOfMemoryException

DashStyle.Dash在渲染我的对象层次结构时使用。我的应用程序Graphics.Transform广泛使用,我发现在某些比例值(包括 100% 的比例)和某些旋转角度下,Graphics.DrawLine使用OutOfMemoryException带有DashStyle.Dash. 使用谷歌我发现这是一个众所周知的 问题。微软告诉我们这不是一个阻塞 问题。到目前为止,我还没有找到解决这个问题的方法。

我有哪些选择?

0 投票
2 回答
3631 浏览

c# - ImageList / Image OutOfMemoryException

从 ImageList 获取图像时,我遇到了 OutOfMemoryException 我一直无法找到问题的适当解决方案。

我有一个自定义 ListView 控件,它附加了一个用于绘制 ListViewItems 的事件。然后这会调用一个静态方法,该方法旨在绘制项目。

对于大约 300 个项目的 ListView,每次滚动 ListView 时,我们都会使内存增加大约 100Mb。违规代码已被追踪到以下内容:

似乎(当然在 WinXP 上)垃圾收集工作不正常,导致内存呈螺旋状上升。我们尝试在代码块之后直接添加 image.Dispose() 来解决问题,但这没有任何效果。

到目前为止,我设法找到的唯一解决方案是在调用 GC.Collect() 的静态方法的末尾。然而,问题在于它会导致 ListView 缓慢地重新绘制自身,并且在它尝试重新绘制时最终会在屏幕上出现伪影。

有没有其他人经历过这个?或者知道解决方法?

0 投票
1 回答
782 浏览

c# - System.Security.Policy.Evidence、Web 服务和破坏 LoH

已开发的新应用程序大量使用 Web 服务。我们开始定期处理内存不足异常(随着使用量的增加)。在查看内存转储时,我注意到有大量相同大小的字节 []。查看这些 byte[] 的句柄,我注意到它们被 System.Security.Policy.Evidence 引用

经过进一步审查,我将这些内存分配确定为其中包含我们的 Web 服务类的实际程序集 (dll)(特别是其中 2 个程序集在内存中的 128 次和 115 次)。我在这里找到了一些信息-> blogs.msdn.com/tess/archive/2008/06/25/asp-net-memory-leak-byte-arrays-rooted-in-system-security-policy-evidence.aspx

在这里 --> blogs.javista.com/2009/03/18/best-practices-for-crm-memory-usage/

但我还没有找到很多关于这个问题的其他参考资料。(.NET 框架将 Web 服务程序集加载到内存中以检查安全策略)。

目前,我看到的唯一解决方案之一是将 Web 服务的程序集分成引用库的较小程序集。

我很困惑为什么 .NET 框架必须将整个程序集加载到内存中以检查策略,并想看看其他人是否遇到过这个问题以及您的解决方案是什么。

谢谢,丹

0 投票
2 回答
1055 浏览

c# - C#:为什么我会在 NullReferenceException 上得到 OutOfMemoryException?

OutOfMemoryException早点拿到了,不知道是干什么用的。这根本没有意义。在我的代码中四处寻找,突然想起某处忘记检查 null,在这种特殊情况下,它是(并且应该是)正是这样。在我看来,这不应该导致OutOfMemoryException,但我当然已经修复了它。当我这样做时,异常不再出现!

所以我再次删除了检查并研究了我得到的更多异常。事实证明它有一个InnerException 类型NullReferenceException和一个堆栈跟踪,这当然更有意义。

但为什么我得到一个OutOfMemoryException?这在我以前从未发生过……对我来说毫无意义……


很想提供更多背景信息,但如果不上传整个项目,我真的不能说太多,我不能(而且你也不想通读:p)。但它发生的具体地方是这样的:

解决方法是if(exportParameters != null)在代码块之前放置一个。exportParameters是 a List<ExportParameter>,但失败的情况除外null

0 投票
3 回答
453 浏览

java - 32 位进程在 64 位系统上运行时是否需要更多内存?

我有一个相当消耗内存的 java 应用程序。在我的带有 Windows XP Professional 的 32 位系统上,如果我提供它,该应用程序将运行良好-Xmx1280m。下面的一切都会以java.lang.OutOfMemoryError: Java heap space异常告终。

如果我在 64 位 Windows XP Professional 上运行相同的应用程序(其他一切都完全相同),它需要-Xms1400m防止 OutOfMemory 条件。

据我了解,如果我有一个 C 程序并将其编译为 32 位和 64 位,则 64 位版本将需要更多内存,因为指针更宽等等。然而,在我的 java 示例中,虚拟机(Sun)是相同的,字节码是相同的。

为什么在 64 位机器上需要更多内存?