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

c# - Resharper 在大解决方案上抛出 OutOfMemoryException

IDE配置:

Visual Studio 2008 + Resharper 4.5.1 + Agent Smith 1.1.8。最后一个加载项没有任何复杂的配置。

解决方案说明:

33 个类库 + 200 多页的网站。

症状:在 Resharper 上运行一个小时后,IDE 开始抛出 OutOfMemoryExection 异常。正常工作是不可能的,只有重新打开 Visual Studio 才能有所帮助。

有人有这样的问题吗?是否可以将 Resharper 配置为消耗更少的内存?什么 Resharper 功能消耗的内存最多?

0 投票
1 回答
1537 浏览

c# - System.OutOfMemoryException 将带有单个大型 DataGrid 的页面导入 Excel(快速修复)

我们将 Excel 用于一些临时数据透视/报告。

要将数据导入 Excel,我们有一个通用页面,其中包含一个简单的 DataGrid,我们从 DataSet/DataTable 绑定。我们在 Excel 中使用此 URL “导入外部数据”。

不幸的是,我们有一个返回大约 100 列和 40k 行的查询。应用程序服务器只有 2GB 的 RAM,使用的内存增加了 1 gig,然后导致 System.OutOfMemoryException。

我打算重写生成 DataGrid 的页面,以通过循环遍历 DataReader 手动创建 HTML 表,而不是将其全部加载到 DataTable 中。我还打算将更多内存放入服务器。

我的问题是,我怎样才能让这个电子表格立即更新?我可以对 DataGrid 做任何快速修复以暂时让它工作吗?我已经为 DataGrid 关闭了 ViewState。

0 投票
9 回答
10383 浏览

java - 如何检测内存不足的情况?

我有一个在 Websphere Application Server 6.0 上运行的应用程序,由于内存不足,它几乎每天都会崩溃。从详细的 GC 可以确定存在内存泄漏(其中很多)

不幸的是,该应用程序是由外部供应商提供的,修复问题是一个缓慢而痛苦的过程。作为该过程的一部分,我需要在每次 OOM 发生时收集日志和堆转储。

现在我正在寻找一些方法来自动化它。根本问题是如何检测 OOM 状况。一种方法是创建将定期搜索新堆转储的 shell 脚本。这种方法让我觉得有点脏。另一种方法可能是以某种方式利用 JMX。但我在这方面的经验很少或根本没有,也不知道如何去做。

还是在 WAS 中为此提供了某种触发器/挂钩?非常感谢您的每一个建议!

0 投票
2 回答
1485 浏览

.net - 了解 .NET GC 和 OutOfMemory 异常

我正在对 .NET 2.0 Windows 服务应用程序中的 OutOfMemory 异常进行故障排除。为了更好地理解这个问题,我首先编写了一个简单的 .NET WinForm 测试应用程序,该应用程序通过构建一个 ArrayList 直到引发 OOM 异常来生成 OOM 异常。异常被捕获并记录下来,我可以单击表单按钮再次运行 OOME。我发现奇怪的是在第 4 次运行时,下一次 OOME 之前消耗的内存量大约是一半。每次运行时,下面列出的结果都是一致的。Eyeballing TaskManager 也确认了该行为。不幸的是,Perfmon 在试图获得更好的统计数据时冻结了。有人可以解释为什么 3 次运行后内存限制会降低吗?我对GC的理解相当肤浅。您还可以看到我在运行了几次后运行了 GC.Collect() 但它没有

更新:我还发现为每个数组列表项使用 const 字符串与使用新对象有很大不同。代码很简单:


开始循环:内存 10,350,592

  • 抛出 OOM 异常
  • 数组大小:134,217,728

结束循环:内存550,408,192

开始循环:内存 550,731,776

  • 抛出 OOM 异常
  • 数组大小:134,217,728

结束循环:内存 551,682,048

开始循环:内存 551,813,120

  • 抛出 OOM 异常
  • 数组大小:134,217,728

结束循环:内存 551,772,160

开始循环:内存 551,903,232

  • 抛出 OOM 异常
  • 数组大小:67,108,864

结束循环:内存282,869,760

开始循环:内存 283,004,928

  • 抛出 OOM 异常
  • 数组大小:67,108,864

结束循环:内存 282,910,720

GC.Collect 手动触发

开始循环:内存14,245,888

  • 抛出 OOM 异常
  • 数组大小:67,108,864

结束循环:内存283,344,896

0 投票
1 回答
579 浏览

ado.net - .NET System.OutOfMemoryException 和 AppDomains

我有一个插件管理器,它启动一个插件,该插件通过 ADO.NET OLE DB 提供程序连接到 FoxPro 数据库。

在一个客户端站点,连接打开和关闭没有任何问题,但在另一个客户端站点,它卡在“connection.Open();”中 并在几秒钟内分配了超过 1GB 的内存。

此后一分钟内,又分配了 1GB,并引发了 System.OutOfMemoryException。

插件管理器卸载 AppDomain 并继续。

我从哪里开始调试呢?

0 投票
1 回答
1687 浏览

crash - Ocaml“内存不足”异常;详细模式显示“结构比较中的堆栈溢出”

需要修复来自外星来源的非常庞大的 ocaml 程序。问题之一是程序在看似无辜的行崩溃:

“内存不足”异常。问题是那里肯定有足够的内存,并且这条线对于其他输入来说执行得很好,甚至在处理问题的过程中更早。

使用 运行它后OCAMLRUNPARAM="v=63",我看到在崩溃之前打印的一行:

结构比较中的堆栈溢出

所涉及的结构定义如下。 loc是类型location

应该怎么做才能使代码执行?

0 投票
22 回答
1066080 浏览

java - 错误 java.lang.OutOfMemoryError:超出 GC 开销限制

我在执行JUnit测试时收到此错误消息:

我知道 anOutOfMemoryError是什么,但是 GC 开销限制是什么意思?我该如何解决这个问题?

0 投票
5 回答
11815 浏览

c# - string.split() 读取制表符分隔文件时出现“内存不足异常”

我在我的 C# 代码中使用 string.split() 来读取制表符分隔的文件。我正面临代码示例中提到的“OutOfMemory 异常”。

在这里,我想知道为什么大小为 16 MB 的文件会出现问题?

这是正确的方法吗?

0 投票
1 回答
1203 浏览

.net - 打开一个简单的 OleDB 连接会引发 OutOfMemory 异常?

我在使用我们的一个应用程序时遇到了问题。它是 .NET 3.5 32 位进程。启动时,我们打开一个 .mdb 来读取一些“元数据”值。这适用于数百个系统,但我们有一个使用 TabletPC 和问题的客户。操作系统是 Windows XP Tablet PC SP3,32 位,bla bla。没有什么不寻常的。它具有 .NET 3.5(来自 Windows 更新)所有最新版本。没有什么不寻常的。

由于我们的应用程序在启动期间做了“一些事情”,因此我创建了有史以来最简单的控制台应用程序:

结果:

如果我们在同一路径中执行没有文件“metadata.mdb”的单个 .exe,我们会得到明显的结果:“找不到文件 bla bla bla”。那是对的。

如果我们复制元数据(稍后会详细介绍元数据),我们会得到:

注意:异常是西班牙语,我翻译了它,但内容保持不变,唯一的区别是“类型异常”,但命名空间未受影响

元数据中有什么?:这是一个简单的 MS ACCESS 2000 文件,有一个表和几条记录(它以加密形式存储不同的 MS-SQL 连接字符串),所以在启动时我们可以读取连接,解密它们并为用户提供一个列表选择不同的连接。我创建的测试程序中不存在(或执行)该功能,因为在 connection.Open() 中(显然)引发了异常

尤其是关于这台电脑的更多信息 这个 盒子看起来很正常。我们已经从不同的来源(Windows 更新)和 dotnetfx.exe(250mb 的大文件)重新安装了 .NET,甚至从那个大的 .net 安装程序执行了“修复”。.NET 似乎可以工作,因为这个小控制台应用程序以 .NET 3.5 为目标。

为什么要做这个测试? 控制台应用程序这样做的原因只是因为我们自己的应用程序(除其他几件事之外)一旦开始执行 Main(),这是我们首先要做的事情之一,所以我隔离了那段代码并发现异常正在那里抛出。为了确保我们的代码没有任何事情要做,我创建了测试应用程序并发现了奇怪的异常。

谷歌呢? 我一直在疯狂地搜索 google/SO/etc。无济于事。OutOfMemory 是一个非常具有误导性的搜索词,即使与 oledb 和其他“可能的”关键字结合使用('虽然我可能会遗漏一些东西)。尝试使用命名空间的其他部分进行搜索时,会指向似乎与此特定问题无关的奇怪结果。

问题是什么? 哦,这很简单:有什么想法吗?

抓住 我试图避免重新安装整个 Windows(这也可以解决问题,因为这个简单的东西适用于数百台其他计算机)。这个盒子似乎没有感染恶意软件或类似的东西,它是用于医疗保健的平板电脑,因此即使使用“开放”的互联网访问也很少使用。这并不意味着盒子是 100% 干净的(对于 Windows,您永远无法确定)。如果您知道或遇到过此问题(并找到了解决方法),请赐教。

提前致谢!

0 投票
2 回答
971 浏览

java - Eclipse 的 .ini 设置似乎没有帮助我更改最大堆大小

这是我的 eclipse.ini 文件:

默认的东西。但是,我有一个应用程序似乎因 64 mb 的堆大小而崩溃。我每隔几秒钟打印一次堆大小(以字节为单位),直到它崩溃,这是最后一个输出:

66650112 线程“主”java.lang.OutOfMemoryError 中的异常:java.lang 等处的 Java 堆空间

我正在使用 Sun 的 java。还有其他地方我需要设置java可用的最大内存吗?