问题标签 [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.
.net - “内存泄漏”的剖析
从 .NET 的角度来看:
- 什么是内存泄漏?
- 如何确定您的应用程序是否泄漏?有什么影响?
- 如何防止内存泄漏?
- 如果您的应用程序有内存泄漏,它会在进程退出或被杀死时消失吗?或者,即使在进程完成后,您的应用程序中的内存泄漏是否会影响系统上的其他进程?
- 那么通过 COM Interop 和/或 P/Invoke 访问的非托管代码呢?
memory-leaks - Rational Purify 无法跳转到内存泄漏
所以我的公司使用了一个令人愉快的错误程序,称为 Rational Purify(作为 Microsoft Visual Developer Studio 的插件)来管理内存泄漏。该程序旨在让您在遇到内存泄漏后单击它,然后跳转到发生泄漏的行。
不幸的是,Purify 出现故障,Purify 不会跳转到发生泄漏的地方,它只会提及发生泄漏的类和方法。不幸的是,有时这与雇用指南来帮助您狩猎熊并让他指出一样有用去森林告诉你那里有熊。
有 Purify 经验的人知道我该如何解决这个问题或有一本好的手册可以看吗?
memory-leaks - 使用 lambdas 作为事件处理程序会导致内存泄漏吗?
假设我们有以下方法:
如果实例化了具有该方法的类,并且PotentialMemoryLeaker
多次调用该方法,我们是否会泄漏内存?
在我们完成调用后,有什么方法可以解开那个 lambda 事件处理程序MethodThatFiresAnEvent
?
memory-leaks - IE 6 中存在内存泄漏的大型 Web 应用程序
我有一个巨大的网络应用程序,它在 IE 6 中存在内存泄漏问题。
在演示问题的 5 行代码示例中修复内存泄漏很容易。
但是如果我有一个非常庞大的应用程序,应该从哪里开始呢?
.net - .NET 中的内存泄漏
在 .NET 中发生内存泄漏的所有可能方式有哪些?
我知道两个:
- 未正确取消注册Event Handlers/Delegates。
- 不在 Windows 窗体中释放动态子控件:
例子:
更新:这个想法是列出不太明显的常见陷阱(例如上面的)。通常的想法是,由于垃圾收集器,内存泄漏不是一个大问题。不像以前在 C++ 中那样。
很棒的讨论家伙,但让我澄清一下……根据定义,如果在 .NET 中没有对对象的引用,它将在某个时候被垃圾收集。所以这不是诱发内存泄漏的方法。
在托管环境中,如果您无意中引用了您不知道的任何对象(因此我的问题中有两个示例),我会认为这是内存泄漏。
那么,发生这种内存泄漏的各种可能方式是什么?
c++ - 对于 C/C++ 程序及其插件 DLL,最好的免费内存泄漏检测器是什么?
我有一个 .exe 和许多 .exe 加载的插件 .dll 模块。(我有两者的源代码。)跨平台(有源代码)解决方案将是理想的,但该平台可以缩小到 WinXP 和 Visual Studio(在我的情况下为 7.1/2003)。
内置的 VS 泄漏检测器仅给出调用 new/malloc 的行,但我有一个用于分配的包装器,因此最好使用完整的符号堆栈跟踪。
检测器还能够检测 .exe 及其随附的插件 .dll 模块中的泄漏。
vb6 - 我什么时候必须在 VB6 中将变量设置为“无”?
在我的一个 VB6 表单中,我创建了几个其他 Form 对象并将它们存储在成员变量中。
我注意到每当创建和销毁此(父)表单时,我都会泄漏内存。我有必要将这些成员变量分配给Nothing
inForm_Unload()
吗?
一般来说,什么时候需要?
已解决:当我对有Unload
问题的表单执行操作时,而不是当我将表单设置为Nothing
. 我还通过将一些类模块的实例显式设置为 ,设法消除了其他一些内存泄漏Nothing
。
java - 如何查找 Java 内存泄漏
如何在 Java 中找到内存泄漏(例如,使用 JHat)?我试图在 JHat 中加载堆转储以进行基本查看。但是,我不明白我应该如何找到根引用(ref)或任何它被称为的东西。基本上,我可以说有几百兆字节的哈希表条目([java.util.HashMap$Entry 或类似的东西),但地图到处都在使用......有什么方法可以搜索大地图,或者也许找到大对象树的一般根?
[编辑] 好的,到目前为止我已经阅读了答案,但我只是说我是一个便宜的混蛋(这意味着我对学习如何使用 JHat 比为 JProfiler 付费更感兴趣)。此外,JHat 始终可用,因为它是 JDK 的一部分。当然,除非 JHat 除了蛮力之外别无他法,但我不敢相信会是这样。
此外,我认为我无法实际修改(添加所有地图大小的日志记录)并运行它足够长的时间让我注意到泄漏。
.net - 在 VB6 中重用变量是个好主意吗?
本质上,我想知道在 VB.NET 2005 中是否使用 sqlcommand 然后通过使用 NEW 重用它是错误的。会不会导致内存泄漏。
例如:
编辑:放入 try catch 以避免关于不使用它们的评论
asp.net - Microsoft ASP.NET Ajax 是否会导致 DOM 对象泄漏?
我们一直在使用“Drip”来尝试确定为什么其中包含 UpdatePanel 的页面往往会使用大量客户端内存。对于一个定期回发的页面,我们看到 Drip 检测到 0 个泄漏。然而,当我们添加一个更新面板时,更新面板内的每个 DOM 对象都会出现泄漏(根据 Drip)。
我不确定 Drip 是否足够可靠以报告这类事情 - 报告的泄漏似乎表明 Drip 正在稍微修改页面。
有人对这个有经验么?我应该恐慌并停止使用 Microsoft Ajax 吗?我并没有怀疑微软,但对我来说它可能会这么糟糕似乎很可疑。
此外,如果您知道比 Drip 更好的工具,那也会有所帮助。