问题标签 [memory-leaks]

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 投票
10 回答
6673 浏览

.net - Silverlight 内存分析器是否存在?

CLR 探查器似乎不适用于 Silverlight CLR。是否存在另一个内存分析器?

0 投票
7 回答
35940 浏览

ruby-on-rails - ruby/ruby on rails 内存泄漏检测

我使用 ruby​​ on rails 编写了一个小型 Web 应用程序,它的主要目的是上传、存储和显示来自 xml(文件最多几 MB)文件的结果。运行大约 2 个月后,我注意到 mongrel 进程使用了​​大约 4GB 的内存。我对调试 ruby​​ 内存泄漏进行了一些研究,但找不到太多。所以我有两个问题。

  • 有没有什么好的工具可以用来查找 Ruby/rails 中的内存泄漏?
  • 什么类型的编码模式会导致 ruby​​ 中的内存泄漏?
0 投票
5 回答
3059 浏览

c++ - 运行单元测试时的内存泄漏检测

我有一个带有一套单元测试的 Win32 C++ 应用程序。单元测试完成运行后,我希望自动生成关于任何未释放内存的可读报告。理想情况下,报告将有一个堆栈,其中包含每个未释放分配的文件和行号信息。最好让它们以一致的顺序生成,以便轻松区分它从一次运行到下一次运行。(基本上,我想要 valgrind --leak-check=full 的结果,但在 Windows 上)。

我已经成功使用 UMDH 从正在运行的进程中获取此类信息,但该工具似乎只有在附加到现有进程时才有效。我希望每次运行单元测试时自动发生这种情况。

有没有可以做到这一点的工具?如果是这样,我该如何使用它?

谢谢!

0 投票
5 回答
8612 浏览

javascript - 你知道什么可能导致 JavaScript 中的内存泄漏吗?

你知道什么可能导致 JavaScript 中的内存泄漏吗?我对浏览器感兴趣:IE 7、FireFox 3、Safari 3

0 投票
5 回答
2680 浏览

c++ - 函数内的字符串文字:自动变量还是在堆中分配?

我们在函数内部使用的字符串文字是自动变量吗?或者它们是否分配在我们必须手动释放的堆中?

我的情况类似于下面显示的代码,其中我将字符串文字分配给类的私有字段(在代码中标记为 ONE)并稍后在我的程序中检索它并使用它(标记为 TWO)。我是否将堆栈中的变量分配给 ONE 中的字段?代码是否可以引用一个悬空指针,在这种情况下它可以工作,因为程序足够小?

我已经编译并运行了它,它运行良好,但是在我的实际程序中出现了奇怪的崩溃,我将字符串文字分配给这样的类的字段,我怀疑我上面提到的情况。

我应该将变量“s”声明为 char 数组而不是指针吗?我打算使用std :: string,但我只是对此感到好奇。

一如既往,非常感谢任何指针或帮助:) 谢谢。

0 投票
10 回答
30290 浏览

java - Java 中的循环引用

给定一个以复杂、循环的方式相互引用的类实例的聚合:垃圾收集器是否可能无法释放这些对象?

我隐约记得这是过去 JVM 中的一个问题,但我认为这在几年前就已经解决了。然而,对 jhat 的一些调查显示,循环引用是我现在面临的内存泄漏的原因。

注意:我一直认为 JVM 能够解析循环引用并从内存中释放这些“垃圾岛”。但是,我提出这个问题只是为了看看是否有人发现了任何例外。

0 投票
8 回答
6493 浏览

delphi - Delphi 5 的哈希表实现

你知道 Delphi 5 的一个好的和免费的 Hashtable 实现吗?

我需要在一个 hastable 中组织大量数据,我有点担心我在网络上大多数可用的实现中发现的内存泄漏问题。

Tks

0 投票
4 回答
6838 浏览

c# - 简单的 WPF 示例导致不受控制的内存增长

我已经将我在我的一个应用程序中看到的一个问题归结为一个非常简单的复制样本。我需要知道是否有什么不对劲或我错过了什么。

无论如何,下面是代码。行为是代码在内存中运行并稳定增长,直到它因 OutOfMemoryException 而崩溃。这需要一段时间,但行为是正在分配对象并且没有被垃圾收集。

我已经进行了内存转储并在一些事情上运行了 !gcroot 并使用 ANTS 来找出问题所在,但我已经研究了一段时间并且需要一些新的眼光。

此复制示例是一个简单的控制台应用程序,它创建一个 Canvas 并向其添加一个 Line。它不断地这样做。这就是代码所做的全部。它时不时地休眠以确保 CPU 不会因为过度使用而导致系统无响应(并确保 GC 无法运行时不会出现异常情况)。

有人有什么想法吗?我仅使用 .NET 3.0、.NET 3.5 和 .NET 3.5 SP1 进行了尝试,并且在所有三个环境中都发生了相同的行为。

另请注意,我也将此代码放入了 WPF 应用程序项目中,并在单击按钮时触发了代码,它也发生在那里。

注意:下面的第一个答案有点偏离基础,因为我已经明确指出在 WPF 应用程序的按钮单击事件期间会发生同样的行为。但是,我没有明确说明在那个应用程序中我只进行了有限次数的迭代(比如 1000 次)。这样做可以让 GC 在您单击应用程序时运行。另请注意,我明确表示我已经进行了内存转储,并发现我的对象是通过 !gcroot 植根的。我也不同意 GC 将无法运行。GC 不在我的控制台应用程序的主线程上运行,特别是因为我在双核机器上,这意味着 Concurrent Workstation GC 处于活动状态。然而,消息泵,是的。

为了证明这一点,这里有一个在 DispatcherTimer 上运行测试的 WPF 应用程序版本。它在 100 毫秒的计时器间隔内执行 1000 次迭代。有足够的时间来处理来自泵的任何消息并保持较低的 CPU 使用率。

注意2:我使用了第一个答案中的代码,我的记忆增长非常缓慢。请注意,1ms 比我的示例慢得多,迭代次数也少得多。在开始注意到增长之前,您必须让它运行几分钟。5 分钟后,它从 30MB 的起点变为 46MB。

注意3:删除对 .Arrange 的调用完全消除了增长。不幸的是,该调用对我的使用非常重要,因为在许多情况下,我是从 Canvas(通过 RenderTargetBitmap 类)创建 PNG 文件。如果没有调用 .Arrange 它根本不会布局画布。

0 投票
4 回答
2694 浏览

.net - .NETCF 中的内存泄漏 - 创建动态控件?

我在 .NET CF 应用程序中遇到内存泄漏问题。

使用RPM我发现动态创建控件不会像预期的那样被垃圾收集。在 .NET 窗口窗体中运行同一段代码的行为会有所不同,并且会按我的预期处理控件。

通过 PerfMon 查看 RPM 的输出以了解进程堆计数器:
替代文字

GC 堆:
替代文字

我最好的猜测是,对面板的弱引用是由于某种未知的原因导致对象没有资格进行 GC,可以吗?

请注意:尽管Dispose()解决了示例的问题,但我无法轻松地将其合并到现有应用程序中,因为它无法明确确定对象何时不再使用。

我已经包含了一个简化版本的源代码来说明这个问题:

更新:
1. 调用 GC.Collect() 也不会导致面板被清理。
2. 在 Windows CE 4.2 设备上使用 .NET CF 2.0 SP1。

0 投票
3 回答
18492 浏览

javascript - 如何在 Firefox 中跟踪和调试 JavaScript 内存泄漏?

我一直在尝试跟踪这个一个月,但没有任何成功。我在汽车广告网站上有这段代码,考虑到汽车有多张图片,它基本上允许缩略图在搜索结果中旋转。您可以在以下位置看到它的实际效果:

http://www.abcavendre.com/4506691919/

它建立在mootools 1.2框架之上。问题是这个脚本,在 Firefox 3 下,当页面充满那些旋转图片时,会消耗相当多的内存超时,例如这个库存页面:

http://www.abcavendre.com/Vitrine/Israel_Huttman/

您可以在此处查看相关脚本的来源:

http://www.abcavendre.com/scripts/showcase_small.js

关于导致内存泄漏的任何想法?奇怪的是这段代码在 IE7 下运行正常。