问题标签 [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.
jetbrains-ide - 如何在 Rider 中运行 DotMemory 测试?
如何在骑手内部运行 DotMemory 单元测试 (NUnit)?我可以通过指定 dotMemory 支持来使用 teamcity 运行这些测试,但不知何故我无法在 Rider 内部运行这些测试。
dotmemory - (如何)在使用 dotMemory CLT 进行分析时启用分配数据收集
我对dotMemory CLT感到满意,我想了解是否/如何使用命令行标志启用分配数据的收集。
使用 API,我知道利用 的能力MemoryProfiler.EnableAllocations
,而使用桌面应用程序,我只需选中一个框
但我没有发现关于 CLT 的这个概念的参考。
尝试使用start
并不能解决问题,并且仔细研究dotMemory help start
并没有发现任何有希望的东西。
这只是不受支持,还是我错过/误解了文档的关键部分?
c# - NHibernate 的 Windows 服务正在增加使用的内存
我正在调试一个需要每隔几个月手动重新启动的现有 Windows 服务(用 C# 编写),因为它一直在消耗内存。
服务不是很复杂。它从保存产品的外部服务器请求一个 json 文件。接下来,它将这个 json 文件解析为产品列表。对于这些产品中的每一个,它正在检查该产品是否已经存在于数据库中。如果不存在,则将添加它,如果它确实存在,则将更新属性。
该数据库是 PostgreSQL 数据库,我们使用 NHibernate v3.2.0 作为 ORM。
我一直在使用 JetBrains DotMemory 在服务运行时对其进行分析:
该服务启动并在 30 秒后开始工作。SnapShot #1 在第一次运行之前制作。快照 #6 是在第 5 次运行后制作的。其他快照也是在运行后制作的。正如您在每次运行后看到的那样,对象的数量增加了大约。60k 并且每次运行后使用的内存都会增加几 MB。
仔细查看快照 #6,显示保留的大小主要由 NHibernate 会话对象使用:
这是我的 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
结束时调用。
dotmemory - dotMemory - 查找寿命短的对象
如何使用 dotMemory 来识别所有创建的对象,然后在快照中或在两个快照之间收集这些对象?似乎它应该能够,但我找不到讨论这个问题的任何地方(或者我不知道要搜索的正确术语)。
c# - 使用点内存 API 在同一个 .dmv 文件上拍摄多个快照
我正在尝试使用 dot memory api 来分析我的特定代码。当我调用 dump() 方法时,我的期望是拍摄快照并将其保存到目录。
我试图在执行我的代码之前和通过调用 dump() 方法执行我的代码之后在这里拍摄两个快照。
是否可以在同一个输出文件中创建两个快照,就像我们选择从独立点内存中进行操作一样?
欣赏你的建议。以下是代码片段
.net - 与 dotMemory 中的 .NET 总量相比,Web 应用程序的内存使用率非常高
下图很好地显示了我的问题。
我有一个应用程序,它会占用它可以获取的所有内存。图像中的快照是在 5-10 分钟的时间跨度内拍摄的。在上一个快照中,我尝试通过 dotMemory 强制执行 GB。
上周末它吃掉了服务器上 60Gb 的可用内存,IIS 重新启动了进程,然后一切都回到了应用程序,从 1Gb 开始,然后再次达到 60Gb。
.NET 总数和使用的 .NET 似乎保持增长一点,但没有应用程序消耗的总内存那么多。
查看快照之间的比较“系统”似乎是拥抱所有内存的命名空间。它远远领先于排名第二的“微软”。
展开“系统”窗格会给我以下视图。
我将如何进一步分析?当我尝试查看“密钥保留路径”时,我得到以下内容,这似乎对我没有太大帮助。
我以前玩过dotMemory,但我以前从未经历过这样的事情。通常我可以快速找到一些我自己的命名空间,并通过它缩小到我的代码中我忘记处理某些东西的位置。
我尝试查找其他问题,但似乎没有一个问题与我的情况相同。如果您知道我尚未找到的问题,请随时向我指出另一个问题的方向。
dotmemory - 使用 DotMemory 获取连接字符串
我正在尝试使用 DotMemory 获取连接字符串。我可以获得连接字符串,但似乎密码已被删除。
我所期望的“数据源 = MyOracleDB;用户 ID = 我的用户名;密码 = 我的密码;”
我得到什么“数据源 = MyOracleDB;用户 ID = 我的用户名;”
DotMemory 是删除密码还是密码根本不存在于内存中?
memory-profiling - 如何知道我是否也必须进行内存分析?
我目前对 ASP.NET Core 应用程序进行 CPU 采样,向它发送大量请求(> 500K)。我看到应用程序的峰值工作集约为 300 MB,考虑到对应用程序发出的请求数量,我认为这并不大。但是我观察到的是,当我在我的应用程序中启用某些功能时,每秒请求数会大幅下降。
问题: 我也应该进行内存分析吗?我问这个是因为即使峰值工作集约为 300MB,可能会有大量的短期对象可以由 GC 创建和收集,并且由于 GC 的工作也算作 CPU,我是否也应该进行内存分析以查看是否我分配太多?
production-environment - 使用 dotMemory 创建内存快照会暂停应用程序吗?
我有内存泄漏,仅在生产中发生(webapp(Asp.Net MVC))。
我想用 dotMemory(或类似的工具)拍摄内存快照,看看发生了什么。
但是我不确定这是否会导致生产暂停并弄乱当前的任何请求。
Fwiw 我的机器上有 32 GB 的 RAM
所以我的问题是:
我可以在不妨碍/影响请求的情况下获得内存快照吗?