问题标签 [dotmemory]
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.
asp.net - 无法使用 dotMemory 开始内存分析
我正在尝试使用JetBrains dotMemory来分析在 IIS10 上运行的 ASP.NET MVC Web 应用程序。当我附加到进程w3wp.exe并单击运行时,出现以下错误:
无法开始分析。细节:
Profiler 无法附加到进程:请确保该进程没有在其他 Profiler、性能监控工具、模拟工具下运行,或尝试重新启动计算机。
我没有任何其他分析器或工具可以运行该进程。另外,尝试重新启动。但是,没有任何效果。
有什么建议么?
c# - 我在结合 dotMemory、xUnit 和异步时做错了什么
我有一个单元测试,我尝试验证我是否已经处理了曾经附加到主用户界面的文档。单元测试必须是异步的,因为一切都需要在 STA 线程下运行,我必须等待创建用户界面。
我有一个助手可以将动作分派到 STA 线程上。
我在测试主体中创建内存对象,然后将其传递给异步方法,如下所示。
查看用###注释的代码行以查看实际的问题行。dotMemory 报告该对象尚不存在,但我已经做出断言证明该对象确实存在。
(STA Helper 类可以在https://gist.github.com/bradphelan/cb4f484fbf6a7f9829de0dd52036fd63找到)
这是与 async 和 dotMemory 有关的问题吗?
我已经创建了上述相同测试的同步版本,它没有失败。ShouldCollectAsync和ShouldCollectSync下面有两个测试。异步一个失败,同步一个通过。
c# - dotMemory 非托管资源
我有 ac# ASP .NET MVC
5 应用程序,我正在使用dotMemory
. 它是一个小型 Web 应用程序,大约有 15 个控制器,使用EF6/dal
, 和AutoFac/DI
. 还有一些其他的模型/服务/等库。
dotMemory
显示600mb
正在分配非托管内存,并且为.NET
托管资源分配了大约 20 MB 的内存。 dotMemory
不允许您探索任何非托管资源。那么如何确定为什么我的应用程序使用了如此多的非托管内存呢?
谢谢
c# - dotMemory 和跟踪内存泄漏
我有我认为的基本 Web 应用程序 MVC,EF6。用户有一个仪表板,显示一个包含来自两个不同数据库系统的数据的表。MSSQL 和 Informix(使用 IBM.Data.Informix)。
随着时间的推移,IIS 进程一直在蚕食内存。我抓住 dotMemory 帮助我尝试定位它,但现在试图弄清楚如何读取这些数据。
我让网页保持打开状态,每隔 10 秒就会有一个 Ajax 调用返回新数据。
总数与下面的数字不匹配,但有些事情不是应有的。
下面的图片似乎告诉我,我的应用程序最多只使用 10mb。
我还在研究堆,但似乎这不是大块所在的地方。
我仍在挖掘视频和指南,以帮助我找出这个问题的位置。我使用了很多内置框架,我真的没有看到我正在使用的代码有问题,除非某处有错误,或者我真的错过了我不应该在代码中做的事情。
数据库管理器
控制器
c# - 除非启动应用程序,否则无法连接到 dotMemory API
我有以下内容来启动分析 API:
但是,如果我运行它并将 dotMemory 附加到它,那么MemoryProfiler.CanControlAllocations
它总是false
(MemoryProfiler.IsActive
变成true
)。
如果我让 dotMemory 启动应用程序,那么它会按预期工作,并且两者都评估为true
.
但是,如果我将 a 替换为while
aConsole.Read()
和 an,if
如下所示:
然后它工作正常。
这是怎么回事?循环如何while
改变这样的行为?
更奇怪的行为
如果我运行以下命令(if
注释掉)
然后我得到输出:
然后在调用时引发异常EnableAllocations()
:
我希望那是因为MemoryProfiler.CanControlAllocations
is false
。
但是,如果我取消注释该if
声明:
然后一切正常,我得到了预期的输出:
prism - dotmemory 快照崩溃应用程序
Resharper Ultimate:2016.3.2 DotMemory:2016.3.2 Visual Studio 2017 Windows 7 Prism 6.3.0 Ninject
这有点奇怪,所以我不确定如何描述它,但我会试一试。
最初,我设置了向其区域注册的页面,因此我的所有页面都声明如下
然后将它们绑定到该区域。
在更新内容时,我决定不再麻烦绑定页面并将它们注册到区域,而是切换到使用 RequestNavigate,因此我删除了向区域注册视图,并将绑定更改为
在调试模式下,这一切都很好。然而,这就是事情变得奇怪的地方。我运行 dotmemory 进行了一些泄漏测试,发现如果我在进入某些页面之前拍摄快照,软件就会崩溃。如果我没有拍摄快照,或者我在进入页面后拍摄了快照,则没有任何崩溃。
另外,如果我添加
绑定页面后,我也没有问题。(所以现在这是我可怕的临时修复)
我只是想知道是否有人知道为什么会发生这种情况。我得出的唯一两个结论是
a) RequestNavigate 没有通过 ninject 正确解析。b) 不知何故,从 dotmemory 获取快照正在清除内核中尚未解决的任何内容。
我的期望并不高,但如果有人有任何想法可能导致这种情况,它会有所帮助。
white-framework - 使用自动化测试进行内存分析?
目前正在向我们的 UI 框架添加一些自动化测试,我想知道是否有任何方法可以同时执行某种内存分析。
例如,与其让白启动我们的应用程序,不如让它启动 dotmemory(或其他内存诊断工具)获取快照,然后开始执行自动化测试。
我知道这不会像这样追踪内存泄漏,但如果某处内存出现峰值,我们可以将其用作指标。
如果有人知道启动它的方法,那将非常有帮助,即使我们必须使用内置于内存分析器而不是点内存的视觉工作室。
unit-testing - 如何使用 dotmemoryunit 比较快照
所以我已经开始使用 Jetbrains.DotMemoryUnit nuget 包运行内存泄漏测试,但它似乎没有工作。
我们所有的内部命名空间都具有类似 XXX.UI.ModuleName 的格式。
但是在运行测试时,它并没有断言何时存在内存泄漏,并且我故意放入了几个(并且几个不是故意的)
知道我在哪里出错了吗?(我假设它在 where 部分,如果在任何地方)
只是为了确定我改变了获取快照的方式,以便我使用
dotmemoryapi.GetSnapshot
然后我手动打开了我的两个快照来比较它们,并没有提到我的 XXX 命名空间。
但是,如果我也使用分析执行完全相同的内存测试,但手动按下按钮,则会有很多带有 XXX 命名空间的条目。
老实说,不知道这里发生了什么。