问题标签 [memory-profiling]

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 投票
5 回答
212088 浏览

python - 找出 Python 中的对象正在使用多少内存

您将如何找出一个对象正在使用多少内存?我知道有可能找出一段代码使用了多少,但不是一个实例化的对象(在其生命中的任何时候),这正是我想要的。

0 投票
9 回答
50719 浏览

.net - .NET 内存分析工具

可能重复:
有哪些好的 .NET Profiler?

我正在寻找好的 .NET CLR 内存分析工具。

我的关键要求是它能很好地与 IIS 和独立的 CLR 应用程序配合使用。理想情况下,我会看到分配了哪些对象,分配了哪些对象以及它们的大小?

是否有人对您乐于推荐的特定工具有任何好的经验?

0 投票
3 回答
846 浏览

.net - 我可以使用哪些工具和技术来检测和隔离调用大量非托管代码的 .NET 应用程序中的高内存使用情况?

假设我有一个用 C# 编写的 WinForms .NET 应用程序。此应用程序从托管堆和非托管堆中分配大量内存。使用Red Gate ANTS Profiler(我没有使用过)或JetBrains dotTrace等工具,我可以(相对)轻松地找出托管对象的分配细节(谁、何时、多少等)。

当托管对象使用大量本机资源(例如图像或大型 COM 对象)时,或者当我调用具有大量内存需求的非托管第三方库时,我遇到了麻烦。到目前为止,我真的需要做一些侦探工作来弄清楚 1) 是托管代码还是非托管代码是内存占用者,以及 2) 谁使用了这么多非托管堆。

我目前唯一的技术是在 perfmon 中设置性能计数器,比较托管堆和非托管堆的大小、分配等。如果托管堆稳定时非托管堆继续增长,我知道要开始查看非托管库和/或消耗本机资源的 .NET 对象。

帮助开发人员处理大量托管非托管代码的最佳工具和技术组合是什么?

更新:为了更清楚,我想知道如何检测从托管代码调用的非托管代码中的内存问题(高使用率、泄漏)。我相信像 dotTrace 这样的产品只跟踪托管对象。

0 投票
1 回答
196 浏览

ruby - 在 GC Patched ruby​​ 中安装 gem 的正确方法是什么?

我想安装一个 GC Patched Ruby 来对我的应用程序进行内存分析。我按照http://guides.rubyonrails.org/performance_testing.html#gc上的说明在我的主目录安装了一个 ruby​​ 实例(我已经有另一个“官方”实例用于开发)。这个 GC Patched ruby​​ 实例工作正常。

问题是当我需要将 gems 安装到这个实例时,正如上面指南中的步骤 1.8.6 告诉我的那样。我不能在我的机器上使用已经安装的 ruby​​gems,因为它指向其他 ruby​​ 实例。而且我无法将另一个 ruby​​gems 实例安装到我的 gc 修补的 ruby​​ 中。

这就是为什么我想知道在 GC 修补的 ruby​​ 上安装 ruby​​gems 的正确方法,在一台已经安装了另一个未修补的 ruby​​ 的机器上。

0 投票
3 回答
6335 浏览

memory - 使用 VADump 跟踪内存使用情况 - OpenProcess 失败 c0000034

在阅读了最近一期 MSDN 杂志上的一篇文章后,我想尝试使用 VADump 来分解我编写的一些应用程序的内存使用情况。

我的 PC 上可执行文件的唯一副本位于:

c:\Program Files\Microsoft Visual Studio 8\Common7\Tools\Bin\winnt\vadump.exe

无论我给 VADump 的参数组合是什么,它都会返回错误:

OpenProcess Failed c0000034

谷歌搜索会发现其他一些遇到同样问题的人,但这些帖子都没有我能找到的解决方案(甚至是回复!)。

这台机器运行的是安装了 VS2005 和 VS2008 的 WinXP SP2。

VADump 看起来是一个非常有用的工具,我真的很想尝试一下。希望这能在办公室的另一台电脑上工作,但我仍然想让它在我的电脑上工作。

有任何想法吗?

0 投票
3 回答
231 浏览

c++ - 寻找多平台内存泄漏检测程序

好的,我有一个学校任务,主要是挑选 3 个内存泄漏检测程序,然后在老师提供给我们的一堆 c++ 程序上运行它们,看看它们之间的比较。这三个程序必须是多平台的,这就是我卡住的地方。我只能找到一个适用于 MAC OSX 和 Linux 的名为 valgrind 的软件。有人知道其他几个吗?我发现的几乎所有东西似乎都只适用于一个操作系统,或者我必须为此付费。我不必在每个操作系统上实际运行它们,它们只需要有一个可以在另一个操作系统上运行的版本。任何帮助,将不胜感激。

编辑:原来我完全误解了我的任务,我只需要说 1 用于 linux 和 2 用于 Windows。基本上我不能为一个操作系统拥有全部 3 个。这让事情变得容易多了。

0 投票
4 回答
576 浏览

.net - 我可以模拟内存短缺以在 .NET 应用程序中使用较小的源数据集找出内存泄漏吗?

我有一个应用程序,它可预测地在非常非常(非常)大的数据集上产生内存不足错误 - 我们正试图通过优化应用程序的内存管理来解决问题,但是有问题的非常非常大的数据集需要很长时间运行(天)很难迭代测试周期并凭经验找到问题。

暂且不谈应用程序性能的问题——这是正确应用程序行为之后任务列表中的下一个问题:

是否有一种简单的方法来限制应用程序在 Visual Studio 中以调试模式运行时可用的内存量,以便强制仅在非常大的数据集上自然发生的 OutOfMemory 错误而不是在较小的数据集上发生?

0 投票
3 回答
1853 浏览

c# - 哪些 .NET 性能和/或内存分析器允许我分析 DLL?

我为其他程序编写了很多基于 .NET 的插件,这些程序通常编译为 DLL,由本机应用程序启动。我一直在使用 Equatec 的分析器,它效果很好,但现在想要具有更多功能的东西,包括分析内存使用情况的能力。

我尝试了 Red Gate 的 Ant Profiler,但据我所知,没有办法分析 DLL。唯一的选择是分析 EXE。

所以我的问题是还有哪些可用的分析工具可以让我分析单个库 DLL 而不是 EXE。我假设这需要像 Equatec 那样将配置文件代码注入库中?

0 投票
1 回答
1300 浏览

c# - TimerCallback.PerformTimerCallback 内存分配

我有一个 WCF 服务,我正在分析它的内存分配。
我看到每个请求上分配的36%
的内存是通过 TimerCallBack.PerformTimerCallback 分配的,后者又调用以下内容: ExecutionContext.CreateCopy
ExecutionContext.Run
所有这些分配甚至不通过我的代码,只分配通用对象,如Hahtable.bucket 和 ExecutionContextRunData。

我在我的服务中出于应用原因使用计时器,我为每个请求创建一个计时器,并使用一个简单的回调来更新布尔值,然后立即处理它。会不会有关系?

这是相关的分配图:

所有这些分配来自哪里?这是正常的吗?
有没有办法降低一些?

0 投票
1 回答
142 浏览

memory-management - 内存分析器软件 - 如何使用它们?例子?

如果我想检查程序是否存在内存泄漏,我应该使用什么方法来解决这个问题?有哪些可用的软件以及如何使用该软件?我想看看我在这里的某些代码中是否发生了内存泄漏,我不确定如何检查它。

谢谢!