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

.net - 表 NewRow() 导致内存泄漏

在调查内存泄漏时,我发现它是由在循环内多次调用 Table 上的 NewRow() 引起的。但是,创建的 DataRow 从未添加到 Table Rows 集合中,并且 Table Rows Count 从未超过零。

我的问题是为什么每次调用 NewRow 时都会占用更多内存,即使新创建的 DataRow 从未添加到 Rows 集合中,并且从 NewRow 返回的 DataRow 总是分配给相同的局部变量(从而显然丢弃了最后一个新行)。

请忽略为什么代码会创建未添加到表中的 DataRows 的问题!

0 投票
9 回答
31547 浏览

java - 如何在 Eclipse 中强制线程转储?

我正在通过 BEA Weblogic Server v9.2 运行时环境在 Eclipse 中启动一个 Weblogic 应用程序。如果这直接从命令行运行,我会执行 ctrl-BREAK 来强制执行线程转储。有没有办法在 Eclipse 中做到这一点?

0 投票
3 回答
333 浏览

.net - 如何判断我的托管代码是否由于本机库调用而泄漏内存?

我有一个调用本机库的托管 dll。这个本机库通常返回 IntPtrs。这些可以传递给本机库中的其他方法来执行操作,或者告诉库释放与 IntPtr 关联的实例。但只有一些实例需要以这种方式释放,其他实例由库管理。问题是文档并不总是清楚地说明哪些实例必须被释放,哪些不能。

我想知道的是,是否有一种方法可以判断我的代码是否保留了对任何必须释放的指针的引用,从而导致内存泄漏?

0 投票
5 回答
15789 浏览

cocoa - 带有 _NSAutoreleaseNoPool 错误的 NSThread

我有一种将文件保存到互联网的方法,它可以工作但速度很慢。然后我想让用户界面更流畅,所以我创建了一个 NSThread 来处理慢任务。

我看到一个错误列表,例如:

没有 NSThread,我调用的方法如下:

我使用以下方法使用 NSThread 调用该方法:

谢谢。

0 投票
9 回答
486 浏览

.net - 在编写 .NET 代码时,关于避免内存泄漏的“注意”清单是什么?

当您编写数千行 .NET 代码时,您要注意什么以避免内存泄漏?我是预防检查的忠实拥护者,关于这一点有一个著名的例子是使用“StringBuilder”来组合字符串而不是“String1+String2”,那么您的编码经验还有什么?

提前感谢您分享您的想法。

0 投票
4 回答
2061 浏览

c - 用于 fortran 程序的 mtrace

我正在尝试用于mtrace检测 fortran 程序中的内存泄漏。我正在使用 gfortran 编译器。有关 mtrace 的(工作)C 示例,请参阅维基百科条目:http ://en.wikipedia.org/wiki/Mtrace

我尝试了两种方法,即包装 mtrace() 和 muntrace() 并从 fortran 程序中调用它们,以及创建一个直接调用 mtrace() 和 muntrace() 的 C 程序,除了中间的泄漏 fortran 代码。这两种方法都无法检测到内存泄漏,但这里我只介绍后者。

例子.c

泄漏的.f90

我编译:

然后我运行:

然后我解析raw.txt mtrace输出:

并得到:

没有内存泄漏。

有什么我做错了,或者我可以做些什么来mtrace找到泄漏的fortran内存分配?我猜 gfortran 正在使用不同的malloc调用,它mtrace不会跟踪......事实上,正如我在上面所写的,如果我编写一个调用 (wrapped)mtrace()muntrace().

已编辑:我考虑了其他选项(包括此处尚未提及的一些选项),但正在调试的实际代码在 P6/AIX 上运行,因此 Valgrind 将“只是”不方便(它需要在不同的机器上运行),而 Forcheck 将是不方便(它需要在不同的机器上运行)和昂贵的(〜3k $)。目前 mtrace 将是最好的解决方案,如果它有效的话。

再次编辑:我的猜测

我猜 gfortran 正在使用不同的malloc调用,它mtrace不会跟踪......

是正确的。查看可执行文件(使用nmreadelf)没有任何malloc()调用,而是调用_gfortran_allocate_array- 可能会调用 malloc)。还有其他想法吗?

再次编辑:我发布了答案,但我不能接受(访问http://stackoverflow.uservoice.com/pages/general/suggestions/39426并请求该功能,它确实需要 - 不需要获得声誉)

0 投票
8 回答
9124 浏览

c++ - 将 auto_ptr 与 new char[n] 一起使用是否错误

如果我使用声明一个临时自动删除的字符缓冲区

然后缓冲区超出范围时会自动删除。我会假设缓冲区是使用 delete 删除的。

但是缓冲区是使用 new[] 创建的,因此严格来说应该使用 delete[] 删除缓冲区。

这种不匹配可能导致内存泄漏的可能性有多大?

0 投票
10 回答
51612 浏览

c - 在 C 中为 malloc 和 free 创建一个包装函数

我正在尝试为Cfreemalloc在 C 中创建包装函数,以帮助通知我内存泄漏。有谁知道如何声明这些函数,所以当我调用它malloc()free()它会调用我的自定义函数而不是标准库函数?

0 投票
10 回答
8918 浏览

c# - 使用 StringBuilder Remove 方法是否比在循环中创建新的 StringBuilder 更节省内存?

在 C# 中哪个内存效率更高:选项 #1 或选项 #2?

0 投票
2 回答
926 浏览

javascript - 谁能解释为什么这个 JavaScript 会导致 IE7 中的内存泄漏?

代码相当长但很简单:

  • 创建了 100 个泄漏的 JavaScript 对象。
  • 从 JS 对象创建了 10 个泄漏元素。
  • 删除 1 个元素,添加 1 个元素 10000 次。

我假设detachEvent呼叫无法正常运行。此外,如果您this.eventParams从数组更改为简单变量,泄漏就会消失。为什么?