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

c# - 使用 RedGate Memory Profiler 了解 ASP.net 中的内存泄漏

我正在运行一个大型 ASP.net 4.0 网站。它使用流行的 .Net 内容管理系统,拥有数千个内容项,数百个并发用户 - 基本上是一个重量级网站。

在 1 天的过程中,IIS7 工作进程的内存使用量可以上升到 8-10GB。服务器已安装 16GB,当前设置为每天回收一次应用程序池。

我面临着减少内存使用的压力。大部分内存使用是由于缓存了大量数据字符串 - 但缓存间隔仅设置为 5-10 分钟 - 所以这些字符串最终应该从内存中过期。

然而,在运行 RedGate Memory Profiler 之后,我可以看到我认为是内存泄漏。我已经按“由 Disposed Objects 专门保存在内存中”的对象过滤了我的实例列表结果(我在 RedGate 论坛上读到,这就是你发现内存泄漏的方式)。这给了我一长串保存在内存中的字符串。

对于每个字符串,我使用 Instance Retention Graph 来查看内存中的内容。System.string 对象似乎在某个时候被 System.Web.Caching.CacheDependency 缓存了。如果我一直跟踪图表,它会遍历各种其他类,包括 System.Collections.Specialized.ListDictionary,直到到达 System.Web.FileMonitor。这是有道理的,因为字符串是文件的路径(图像/PDF/等)。

似乎 CMS 正在缓存文件的路径,但这些缓存的对象随后被“泄露”。随着时间的推移,这会积累并消耗 RAM。

对不起,这是冗长的......我有办法阻止这些内存泄漏吗?或者在不回收应用程序池的情况下清除它们?我可以找到正在缓存的类/代码以查看是否可以修复泄漏吗?

0 投票
1 回答
1074 浏览

profiling - 内存访问分析

我想知道应用程序按访问顺序访问了哪些地址。我听说可以使用 Pin(来自 Intel 的分析器)来执行此操作。

有没有办法用 Pin 或其他一些工具来做到这一点?

该应用程序很可能是用 C 编写的。我正在使用 Linux Mint 14。

注意:视觉结果会很好,但不是必需的。

0 投票
0 回答
100 浏览

ios - 您如何在 iOS 上配置 HTML5 游戏?

我的背景是 Windows 上的原生游戏开发。但我目前正在开发一款使用 HTML5 构建的 iOS 游戏。我如何描述这样的游戏?典型的 iOS 分析工具只会告诉你内存被本地层使用的情况。我不知道 WebView、OpenGL 或本机插件使用了哪一部分内存。我一直在网上搜索,我能找到的最好的方法是如何使用 Google Chrome 分析 HTML5,这对我没有多大帮助。

我会很感激任何帮助。

0 投票
1 回答
814 浏览

objective-c - iPhone iOS6如何将Image IO类型“常驻脏内存”返回给OS?

我正在观看处理高级内存分析的 WWDC 2010 视频(会话 311):

在此处输入图像描述

在视频的 45:00 左右,性能工程师讨论了如何处理您的应用已加载到 RAM 中的“驻留脏内存”。工程师建议,为了响应内存警告,您的应用程序应该清除它。工程师将他的自定义类“flush”方法粘贴到didReceiveMemoryWarning其中,一切都很好,但代码并没有真正提供任何关于如何释放内存的示例。

我的问题是 -如何刷新“Image IO”使用的大块脏内存?

这里有大约 74 mb 的内存,只是坐在肮脏的地方(现在将近 6 分钟),等待有人将它返回到 iOS6。它什么也没有发生。由于它不会自行消失,我需要知道如何将其返回到 iOS。

在此处输入图像描述

这些块似乎源于这样的代码和(可能是其他与图像相关的操作)。

问题是有大量内存存在,加载到 RAM 中,在应用程序崩溃之前无法返回到操作系统。

对于 webview 相关的脏内存,我发现这可能有效:

是否有 UIImage、CALayer 或 UIGraphics 的等价物?

0 投票
2 回答
3260 浏览

google-chrome - Chrome 开发工具栏的时间轴选项卡中的“文档计数”计数器是什么?

有人可以解释一下 Chrome 开发工具栏的时间轴选项卡中的“文档计数”计数器代表什么吗?

在我的应用程序中,我使用 iframe 并在其中一个页面的一组页面中导航。目前“文档计数”计数器显示的值范围是 23-32,它代表什么?

提前致谢。

0 投票
0 回答
179 浏览

iphone - iOS UIImageView 为什么 Instruments 为 ImageWithContentsOfFile 显示较少的活动字节,而不是从 UIImagePickerController 直接分配图像?

在使用仪器分析我的应用程序时,我偶然发现了一个特殊的实时字节问题。如果这是任何真正的“优化”或仪器故障,我很感兴趣。如果整体实际内存占用量保持不变,减少“活动字节”有什么好处吗?对于这两种情况,实际内存使用量保持不变。

我在弹出框控制器中使用 UIImagePicker,它会选择一个大(最大 7mb)图像并将其分配给这样的图像视图:

这是此操作的分配分析。在 2 次图像分配之后,每个图像的活动字节都增加了(大约 5.4 mb)。您可以在图表下方看到图像的 malloc 块(5.4mb 和 768kb)一旦我用新图像(5.mb 到 768kb)替换其中一个图像,实时字节就会“降级”,如图所示大约在 00:55 的图表:

在此处输入图像描述

我正在谈论的特点是,如果获取此图像,将其保存到磁盘,然后我imageWithContentsOfFile:在下面的代码中使用,我的实时字节看起来非常不同:

引入此代码后,我的实时字节分配如下图所示。我重复相同的操作(从图像选择器将两个图像分配给 UIImageView,但在这里我添加了一个方法将它们写入磁盘,然后从磁盘读回它们。(三角形斜坡来自当我从图像创建 NSData用于写入磁盘):

在此处输入图像描述

0 投票
2 回答
476 浏览

java - 同时在多个 java 实例上自动执行 JAVA 内存分析

我在开发 JAVA 方面相对缺乏经验,我希望能得到一些建议。

我有一个模块化的 JAVA 服务器应用程序设置,其中一个高级服务充当与 8 个较低级别服务通信的前端接口。

在生产中,每个服务都托管在自己的机器上。

我正在寻找一个标准的 SE 开发环境,它在本地启动所有实例。我目前正在使用 eclipse 和 JVMmonitor。

我目前的工作流程涉及手动启动每个服务,然后通过eclipse手动触发每个服务的监控过程。这个工作流程可以完成工作,但我确信有人遇到过更智能的解决方案。大多数论坛帖子只解决监控一个java实例。

还有其他任何人会建议的独立 JAVA 应用程序吗?如果可能,我想避免添加分析代码。

0 投票
2 回答
2617 浏览

javascript - 使用 FileReader、图像和

我正在处理图像多上传,这听起来不错,但是..一如既往的内存问题。

脚本目标是在上传 100 多张图片 (300Mb+) 时存活下来。因此,如果您发现(我仍然是 javascript 蹩脚)任何问题,请给我一个建议。谢谢。

我的代码:

0 投票
1 回答
1317 浏览

python - 确定 Python 的实际内存使用情况

我目前正在尝试调试我的 Python 程序的内存使用情况(在带有 CPython 2.7 的 Windows 上)。但不幸的是,我什至找不到任何方法来可靠地测量它当前使用的内存量。

我一直在使用任务管理器/资源监视器来测量进程内存,但这似乎只对确定峰值内存消耗有用。很多时候,即使在相关对象被垃圾回收之后很长时间,Python 也不会减少提交或工作集。

有没有办法找出 Python 实际使用了多少内存,或者如果没有,强制它释放未使用的内存?我不想使用任何需要重新编译interperter的东西。

证明它没有释放未使用内存的行为示例:

0 投票
0 回答
182 浏览

c++-cli - 如何从 CLI 项目中追踪 AccessViolationException?

我们得到了一个 CLI Wrapper,它使用了另一个团队编写的 C++ 代码。由于一些版本的源代码更改非常大,我们会从 CLI 中随机获得 AccessViolationExceptions。它完全是随机的,我们试图弄清楚在什么情况下会发生异常 - 没有成功。

堆栈跟踪如下:

我的第一步是在使用 QDataStream 时在 Internet 上搜索异常 - 但我没有找到任何异常。所以我现在担心的是一些内部指针被破坏了。唯一奇怪的是,这个异常只是在给定相同输入的情况下随机发生。(约占所有呼叫的 1-2%)

无论如何,在这里发布原始源代码会太多了——在 C++ 代码中调用的代码行有几千行,所以我在这里的主要问题不是异常起源于哪一行,而是如何(通常)我们可以缩小这个 AccessViolationException。

  • 您会推荐哪种内存分析工具?我假设对上面 QDataStream 的调用不是这个异常的原因,我认为这只是可以检测到(类的已经无效状态)的部分。
  • 我可以从 AccessViolationException 获得更多信息吗?目前,我的应用程序崩溃了,我只能从 Windows 事件日志中获取堆栈跟踪。
  • 任何其他提示我们可以在 CLI 中检查/更改以找出此异常的详细信息?

感谢您提供任何帮助,因为我们在搜索了很多天(和几个晚上..)后对这个错误感到绝望。