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

.net - 我可以找出一代垃圾收集器中的所有对象吗?

我被这样的想法震惊了/永远。其背后的一般想法是,如果多个集合存在相同的事物(通过弱引用跟踪它们,因此对其进行分析的行为不会保留它),应用程序可以确定潜在的资源泄漏对象。我可以找到方法来询问特定对象在哪一代,我可以找到用于非托管代码的 API 或调试工具来调查托管堆,但我真正想要的是托管调用来给我某种数据结构指定代中的对象。

我是否有希望找到这样的东西,或者我正在寻找不存在的东西?

从理论上讲,它可以排除调试器应用程序的实例并解析结果或其他东西,但我希望它在低负载时在实时 Web 服务器上运行,我不确定操作人员是否会喜欢我附加调试器,即使有可能:)

0 投票
3 回答
212 浏览

c# - 如何处理 Nullable从存储过程返回的类型?

我正在寻找一些关于最佳实践(考虑内存和 CPU 时间)的建议,以处理Nullable<T>从使用 Linq2Sql 的存储过程返回的字段。

请考虑以下场景和限制:

  1. 我想避免在代码中的任何地方使用 fieldValue.HasValue 检查。因此,我需要Nullable<T>用一些默认值替换所有普通属性(尤其是 DateTime、Double、Int)。
  2. 我期待读取约 100 万个对象,其中有约 20 个可为 Nullable 类型的字段。
  3. 内存和 CPU 使用率是一个重要的考虑因素。
  4. 要求是从对象(不是 DataRow)中的存储过程中获取结果,从而使用 Linq2Sql。

请分享您处理类似情况的意见或经验。

感谢您的关注。

0 投票
4 回答
2882 浏览

c# - C#内存不足异常——警告策略

在一个复杂的多线程应用程序中,我可能每周遇到一次内存不足异常。该应用程序正在通过多个套接字发送/读取大量数据,其中读取的数据被缓存以避免网卡缓冲区溢出。
分析内存异常的最佳策略是什么?在正常运行时,应用程序在进程资源管理器中显示为“所有堆中的总字节数”高达 1.5 GB。
有一个正在轮询的线程是否是一种策略

GC.GetTotalMemory()

或者

PrivateMemorySize64()

一秒钟知道什么时候开始分析事物?我还没有研究过商业分析器,我有点担心它们对性能的影响,这也可能在实际问题分析中给出错误的结果。

0 投票
4 回答
956 浏览

c# - .NET 中是否存在内存泄漏?如果是,那么最好的工具是什么?

我正在开发一个 C# 4.0 托管代码应用程序。我正在使用不符合 CLS 的外部 DLL。

我是否需要内存泄漏检测工具来检查 DLL 中的内存泄漏?如果是的话,那里最好的工具是什么?

0 投票
4 回答
58187 浏览

.net - 如何使用转储文件来诊断内存泄漏?

我有一个 .NET 服务,其正常的私有工作集约为 80 MB。在最近的一次负载测试中,进程达到了 3.5 GB 内存使用量,导致整机物理内存不足(使用了 4 GB 中的 3.9 个),并且在负载测试停止后很长时间没有释放内存。使用任务管理器,我获取了进程的转储文件并在 Visual Studio 2010 SP1 中打开它,我可以开始对其进行调试。

如何诊断内存问题?我可以使用 dotTrace Memory 3.x,它是否支持对转储文件进行内存分析?如果没有,Visual Studio 2010 Premium 的内存分析功能会有所帮助吗(我目前有 Professional)?WinDbg 可以提供帮助吗?

更新:新的Visual Studio 2013 Ultimate现在可以使用转储文件本地诊断内存问题。有关更多详细信息,请参阅此博客文章

0 投票
0 回答
89 浏览

virtual - 生成页面错误和 LLC 未命中事件的测试套件

我需要根据每秒生成的页面错误数和每秒遇到的最后一级缓存未命中数来分析虚拟机内存访问。是否有标准的测试套件可以帮助我实现这一目标?

下面我描述了我需要实现的确切场景:

  1. 在虚拟机上运行程序/测试套件会产生大量页面错误。
  2. 在虚拟机上运行程序/测试套件以生成大量最后一级缓存未命中。
  3. 监控虚拟机上每秒的页面错误数和每秒最后一级缓存未命中数。
  4. 监控托管裸机机器上相应数量的页面错误和最后一级缓存未命中。

除此之外,还有我需要生成的一组分析结果。

问题 1:是否有标准的测试套件可以帮助我实现目标?如果有,请指出参考。我浏览了 SPEC 基准,但似乎没有发现任何对我的工作有多大用处的东西。

查询 2:如果没有这样的套件,有没有办法我可以编写一个程序来模拟上述场景?

任何方向的任何指针都值得赞赏。

谢谢!

0 投票
1 回答
2140 浏览

c# - .Net 内存分析器和固定

我正在使用 Scitech 的 .Net Memory Profiler 检查我的应用程序中的一些内容(在 WinXP 64 上运行)。我看到很多情况,我的应用程序使用的列表的单个实时实例始终为 32 字节并显示为数组(例如 Products[])。

当我仔细查看该实例时,它看起来并没有被任何东西引用。如果我选中“仅显示根路径中包含的实例”复选框,则列表引用为空。如果我取消选中该复选框,我只会看到:

分配调用堆栈如下所示:

看起来它刚刚结束了一个空列表的构建。当根路径中不包含任何实例并且我看到的只是固定时,这意味着什么?

0 投票
1 回答
1367 浏览

python - 如何使用 pympler 跟踪/修复 tornado-redis 中的内存泄漏?

我一直在尝试使用tornado-redis(它基本上是brükva的一个分支,经过稍微修改后可以使用 tornado.gen 接口而不是 adisp),以便通过使用redis 的 pubsub来传递事件。

所以我写了一个小脚本来测试这个例子的启发。

不幸的是,当我PUBLISH编辑通过redis-cli内存使用不断上升。

为了分析内存使用情况,我首先尝试使用guppy-pe但它在 python 2.7 下不起作用(是的,甚至尝试过trunk)所以我回到了pympler

现在每次我PUBLISH编辑我都可以看到一些对象从未被释放:

现在我知道确实存在内存泄漏,我如何跟踪这些对象的创建位置?我想我应该从这里开始?

0 投票
1 回答
2451 浏览

java - 在 Java 中获取内存统计信息:运行时与 MemoryMXBean

我正在创建一个预定的执行程序来读取 JVM 的内存使用情况。我遇到了两种在正在运行的 JVM 中获取内存统计信息的方法 - Runtime 和 MemoryMXBean,它们的方法之间具有以下对应关系:

除了 MemoryMXBean 提供的额外的非堆内存使用信息之外,还有什么理由让我更喜欢它而不是运行时,反之亦然?

0 投票
1 回答
579 浏览

visual-studio - Windows Phone 分析 - 解析日志失败

我是内存分析 Windows Phone 应用程序的新手。在我停止内存分析会话后,Visual Studio 尝试解析日志,但失败并显示消息“解析日志文件失败”。我看到 %temp% 目录中的“ProfilerLog_”文件并收到以下消息:

可能有人遇到过这个问题并找到一些解决方案?

谢谢。