问题标签 [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.

0 投票
1 回答
1792 浏览

jetbrains-ide - 如何在 Rider 中运行 DotMemory 测试?

如何在骑手内部运行 DotMemory 单元测试 (NUnit)?我可以通过指定 dotMemory 支持来使用 teamcity 运行这些测试,但不知何故我无法在 Rider 内部运行这些测试。

0 投票
1 回答
177 浏览

dotmemory - (如何)在使用 dotMemory CLT 进行分析时启用分配数据收集

我对dotMemory CLT感到满意,我想了解是否/如何使用命令行标志启用分配数据的收集。

使用 API,我知道利用 的能力MemoryProfiler.EnableAllocations,而使用桌面应用程序,我只需选中一个框

显示我引用的复选框的图像

但我没有发现关于 CLT 的这个概念的参考。

尝试使用start并不能解决问题,并且仔细研究dotMemory help start并没有发现任何有希望的东西。

这只是不受支持,还是我错过/误解了文档的关键部分?

0 投票
1 回答
407 浏览

c# - NHibernate 的 Windows 服务正在增加使用的内存

我正在调试一个需要每隔几个月手动重新启动的现有 Windows 服务(用 C# 编写),因为它一直在消耗内存。

服务不是很复杂。它从保存产品的外部服务器请求一个 json 文件。接下来,它将这个 json 文件解析为产品列表。对于这些产品中的每一个,它正在检查该产品是否已经存在于数据库中。如果不存在,则将添加它,如果它确实存在,则将更新属性。

该数据库是 PostgreSQL 数据库,我们使用 NHibernate v3.2.0 作为 ORM。

我一直在使用 JetBrains DotMemory 在服务运行时对其进行分析: DotMemory 概述

该服务启动并在 30 秒后开始工作。SnapShot #1 在第一次运行之前制作。快照 #6 是在第 5 次运行后制作的。其他快照也是在运行后制作的。正如您在每次运行后看到的那样,对象的数量增加了大约。60k 并且每次运行后使用的内存都会增加几 MB。

仔细查看快照 #6,显示保留的大小主要由 NHibernate 会话对象使用:

快照 #6

这是我的 OnStart 代码:

还有我的 DoServiceWork:

在 SAPProductProcessor 我使用两个数据库调用。两者都在一个循环中。我遍历 JSON 文件中的所有产品,并使用产品代码检查产品是否已经在表中:

当 productDto 更新时,我使用以下方法保存它:

我不确定如何更改上面的代码以停止增加内存和对象数量。

我已经尝试过使用var session = SessionFactory.GetCurrentSession();而不是,using (var session = SessionFactory.OpenSession())但这并没有阻止内存的增加。

更新

在我的数据访问类的构造函数中MultiSessionFactoryProvider sessionFactoryProvider注入。基类被调用: base(sessionFactoryProvider.GetFactory("data"))。这个基类有一个方法BeginSession

还有一个EndSession

在我的数据访问类中,我base.BeginSession在开始和base.EndSession结束时调用。

0 投票
1 回答
37 浏览

dotmemory - dotMemory - 查找寿命短的对象

如何使用 dotMemory 来识别所有创建的对象,然后在快照中或在两个快照之间收集这些对象?似乎它应该能够,但我找不到讨论这个问题的任何地方(或者我不知道要搜索的正确术语)。

0 投票
2 回答
463 浏览

c# - 使用点内存 API 在同一个 .dmv 文件上拍摄多个快照

我正在尝试使用 dot memory api 来分析我的特定代码。当我调用 dump() 方法时,我的期望是拍摄快照并将其保存到目录。

我试图在执行我的代码之前和通过调用 dump() 方法执行我的代码之后在这里拍摄两个快照。

是否可以在同一个输出文件中创建两个快照,就像我们选择从独立点内存中进行操作一样?

欣赏你的建议。以下是代码片段

0 投票
1 回答
279 浏览

.net - 与 dotMemory 中的 .NET 总量相比,Web 应用程序的内存使用率非常高

下图很好地显示了我的问题。

我有一个应用程序,它会占用它可以获取的所有内存。图像中的快照是在 5-10 分钟的时间跨度内拍摄的。在上一个快照中,我尝试通过 dotMemory 强制执行 GB。

上周末它吃掉了服务器上 60Gb 的可用内存,IIS 重新启动了进程,然后一切都回到了应用程序,从 1Gb 开始,然后再次达到 60Gb。

在此处输入图像描述

.NET 总数和使用的 .NET 似乎保持增长一点,但没有应用程序消耗的总内存那么多。

查看快照之间的比较“系统”似乎是拥抱所有内存的命名空间。它远远领先于排名第二的“微软”。

在此处输入图像描述

展开“系统”窗格会给我以下视图。

在此处输入图像描述

我将如何进一步分析?当我尝试查看“密钥保留路径”时,我得到以下内容,这似乎对我没有太大帮助。

在此处输入图像描述

我以前玩过dotMemory,但我以前从未经历过这样的事情。通常我可以快速找到一些我自己的命名空间,并通过它缩小到我的代码中我忘记处理某些东西的位置。

我尝试查找其他问题,但似乎没有一个问题与我的情况相同。如果您知道我尚未找到的问题,请随时向我指出另一个问题的方向。

0 投票
2 回答
1076 浏览

c# - 绑定字典,报内存泄漏,如何解决?

dotMemory告诉我(下面的屏幕截图,“WPF 绑定泄漏”)绑定到字典时存在内存泄漏,如下所示:

问题1,给大家:为什么是内存泄漏(即我应该使用什么场景来遇到问题)以及如何解决它?


问题 2,dotMemory 专家:为什么这么基本的 mvvm 应用程序(见下文)报告了这么多问题?我应该解决这些问题吗?如何?


MCVE(创建新的 WPF 解决方案,在 xaml 中使用上述代码)代码后面:

0 投票
1 回答
67 浏览

dotmemory - 使用 DotMemory 获取连接字符串

我正在尝试使用 DotMemory 获取连接字符串。我可以获得连接字符串,但似乎密码已被删除。

我所期望的“数据源 = MyOracleDB;用户 ID = 我的用户名;密码 = 我的密码;”

我得到什么“数据源 = MyOracleDB;用户 ID = 我的用户名;”

DotMemory 是删除密码还是密码根本不存在于内存中?

0 投票
1 回答
52 浏览

memory-profiling - 如何知道我是否也必须进行内存分析?

我目前对 ASP.NET Core 应用程序进行 CPU 采样,向它发送大量请求(> 500K)。我看到应用程序的峰值工作集约为 300 MB,考虑到对应用程序发出的请求数量,我认为这并不大。但是我观察到的是,当我在我的应用程序中启用某些功能时,每秒请求数会大幅下降。

问题: 我也应该进行内存分析吗?我问这个是因为即使峰值工作集约为 300MB,可能会有大量的短期对象可以由 GC 创建和收集,并且由于 GC 的工作也算作 CPU,我是否也应该进行内存分析以查看是否我分配太多?

0 投票
1 回答
558 浏览

production-environment - 使用 dotMemory 创建内存快照会暂停应用程序吗?

我有内存泄漏,仅在生产中发生(webapp(Asp.Net MVC))。

我想用 dotMemory(或类似的工具)拍摄内存快照,看看发生了什么。

但是我不确定这是否会导致生产暂停并弄乱当前的任何请求。

Fwiw 我的机器上有 32 GB 的 RAM

所以我的问题是:

我可以在不妨碍/影响请求的情况下获得内存快照吗?