问题标签 [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 回答
1979 浏览

java - 在最近的 JVM 中,不可见的引用仍然是一个问题吗?

我正在阅读Java 平台性能(遗憾的是,自从我最初提出这个问题以来,该链接似乎已经从互联网上消失了),第 A.3.3 节让我担心。

我一直在假设退出范围的变量将不再被视为 GC 根,但本文似乎与此相矛盾。

最近的 JVM,尤其是 Sun 的 1.6.0_07 版本,是否还有这个限制?如果是这样,那么我有很多代码要分析......

我问这个问题是因为这篇论文是 1999 年的——有时情况会发生变化,尤其是在 GC 领域。


由于该论文不再可用,我想解释一下这个问题。该论文暗示在方法内定义的变量将被视为 GC 根,直到方法退出,而不是直到代码块结束。因此,必须将变量设置为 null 以允许对引用的对象进行垃圾收集。

这意味着在 main() 方法(或包含无限循环的类似方法)的条件块中定义的局部变量将导致一次性内存泄漏,除非您在变量退出范围之前将其置空。

所选答案中的代码很好地说明了这个问题。在文档中引用的 JVM 版本上,当 foo 对象在 try 块结束时超出范围时,无法进行垃圾回收。相反,JVM 将保持打开引用直到 main() 方法结束,即使任何东西都不可能使用该引用。

这似乎是一个想法的起源,即使变量引用为空将有助于垃圾收集器,即使该变量即将退出范围。

0 投票
6 回答
5561 浏览

delphi - 如何使用 fastMM 追踪棘手的内存泄漏?

将项目从 Delphi 2007 升级到 Delphi 2009 后,我遇到了未知的内存泄漏,到目前为止,我一直在尝试使用 fastMM 对其进行跟踪,以下是 fastMM 堆栈跟踪报告的内容:

有时我会得到这个:

有没有更好的方法来找出真正导致内存泄漏的原因?

0 投票
50 回答
36813 浏览

c++ - 内存泄漏可以吗?

在您的 C 或 C++ 应用程序中存在内存泄漏是否可以接受?

如果您分配一些内存并使用它直到应用程序中的最后一行代码(例如,全局对象的析构函数)怎么办?只要内存消耗不随时间增长,是否可以相信操作系统在应用程序终止时(在 Windows、Mac 和 Linux 上)为您释放内存?如果内存被连续使用直到被操作系统释放,你甚至会认为这是一个真正的内存泄漏。

如果第三方库将这种情况强加给您怎么办?是否会拒绝使用该第三方库,无论它有多么出色?

我只看到一个实际的缺点,那就是这些良性泄漏会在内存泄漏检测工具中显示为误报。

0 投票
2 回答
9642 浏览

javascript - 防止 AJAX 内存泄漏

我正在开发一个 Web 应用程序,该应用程序旨在显示一组使用 AJAX 定期更新的数据。一般的使用场景是用户整天打开它,不时看一眼。

我遇到了一个问题,即浏览器内存占用随着时间的推移缓慢增长。这发生在 Firefox 和 IE 7 中(虽然不在 Chrome 中)。几个小时后,它会导致 IE7 的占用空间约为 200MB,而 FF3 的占用空间约为 400MB。

经过大量测试,我发现只有在响应 AJAX 调用时才会发生内存泄漏。如果服务器没有响应任何东西,我可以让页面打开几个小时,并且占用空间不会增加。

我正在为我的 AJAX 调用使用原型。所以,我猜想创建这些内存泄漏的 onSuccess 回调存在问题。

有没有人有任何关于使用原型/AJAX 防止内存泄漏的提示?或有关如何解决此问题的任何方法?

编辑:发现问题出在我正在使用的 js 图形库中。可以在这里看到。

0 投票
8 回答
994 浏览

asp.net - asp.net 应用程序的物理内存过多?

我基于 LLBLGen 的大型 32 位 Web 服务数据访问应用程序单独运行在专用的 64 位机器上。当进程释放几乎所有分配的空间(高达 1.5GB)时,它的物理内存消耗稳步增长到大约 2GB,并从那时起继续增长。页面输入值或其他页面文件使用参数没有明显增加,因此看起来内存被释放而不是被换出到页面文件。我在想这是什么类型的个人资料?没有什么可以真正阻止进程获取它可以获取的所有内存,另一方面,内存释放存在不可接受的 http 内部错误 - 可能是清理块有用的工作。什么是使清理不那么突兀的好策略,

0 投票
2 回答
1799 浏览

visual-studio - Visual Studio 有类似 Borland 的 CodeGuard 的东西吗?

Visual Studio 中是否有任何东西会报告像 Codeguard 这样的内存泄漏?

例如:

0 投票
4 回答
11270 浏览

ios - iPhone - 内存泄漏 - NSData dataWithContentsOfUrl & UIWebView

请帮忙!已经盯着这个看了12个小时;并在网上查看并找不到解决方案。

在我的应用程序中,我在单独的页面/控制器中使用了 2 个 UIView 控件:

  • UIImageView(通过 NSData dataWithContentsOfUrl 检索数据)
  • UIWebView

只是为了隔离我的代码并使其更易于解释,我创建了一个基于视图的新项目,名为“MyTestApplication”

1 - 我在委托函数中添加了一个简单的 NSData dataWithContentsOfUrl。

(这里没有发布,因为它都是使用便利功能)

替代文字 http://img.skitch.com/20081110-j5tn5n7ixph95ys4rpchibaw5p.preview.jpg

看图

2 - 运行它以验证没有泄漏(如预期的那样)

替代文字 http://img.skitch.com/20081110-fy2qrkgy47hm4fe2f1aakd4muw.preview.jpg

看图

3 - 打开 ViewController.xib 并从库中添加一个 UIWebView (无需连接它)

替代文字 http://img.skitch.com/20081110-d63c3yh1a1kqiciy73q8uyd68j.preview.jpg

看图

4 - 运行它以验证是否有泄漏!(为什么???)

替代文字 http://img.skitch.com/20081110-qtxcfwntbcc3csabda3r6nfjg6.preview.jpg

看图

我究竟做错了什么?请帮忙!

如果我使用 UIWebView,为什么 NSData 会导致内存泄漏?我只是不明白。谢谢。

0 投票
3 回答
3407 浏览

c# - ADO.NET + 大量 INSERTs + Excel + C# = “A bad time”吗?

基本上我需要将一堆数据插入到 Excel 文件中。创建 OleDB 连接似乎是最快的方法,但我发现遇到了内存问题。当我执行 INSERT 查询时,进程使用的内存似乎在不断增长。我已将它们缩小到仅在输出到 Excel 文件时发生(内存保持稳定而没有输出到 Excel)。我关闭并重新打开每个工作表之间的连接,但这似乎对内存使用没有影响(Dispose() 也是如此)。数据写入成功,因为我可以使用相对较小的数据集进行验证。如果有人有见识,将不胜感激。

在构造函数中调用initializeADOConn()

initADOConnInsertComm()创建插入参数化插入查询

每当写入新记录时都会调用writeRecord() 。根据需要创建新工作表。

编辑:

不,我根本不使用 Excel。我故意避免使用 Interop.Excel,因为它的性能很差(至少从我对它的涉猎来看)。

0 投票
4 回答
9305 浏览

c++ - Windows 下的 GNU C/C++ 内存泄漏检测

哪些内存泄漏检测工具可用于 Windows 上的开源 C/C++?

0 投票
2 回答
418 浏览

c - C MySQL 客户端库行为

我有一个客户端应用程序,它使用 SuSE SLES 9 上的库存库连接到 MySQL 数据库 4 服务器。但是,有时在处理来自服务器的特定重置集时,迭代抛出结果不允许我处理所有结果在数据库中。

这个问题有时会发生,主要是当服务器有几天的正常运行时间时。我怀疑重启可以解决问题。

无论如何,随着时间的推移不释放 MySQL 结果集会导致这种内存泄漏并以这种奇怪的行为显示自己必须始终释放所有结果集吗?但是,相同的表和相同的程序在另一台计算机上的行为应该如此。

由于应用程序或 mysql 客户端库中的实现问题,结果集是否会损坏?