问题标签 [ants]
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.
c# - 无法使用 ANTS 内存分析器检测内存泄漏
我有一个自定义应用程序,允许打开一些自定义模型。如果我在应用程序中打开一个模型,然后打开另一个模型 - 内存不会从第一个模型中释放。
当我尝试使用分析器(ANTS 内存分析器)分析内存泄漏时,应用程序会释放内存并且我无法跟踪泄漏。我该如何处理这个问题?
c# - ANTS 分析工具中的单线程应用程序等待同步
我的 Windows 应用程序是单线程的。我给 DB 打了很多电话,并与 List 一起工作,这很好(我会努力改进它)。但是,当我选择挂钟时间等待同步显示 51!%并且最糟糕的部分是没有可用的源时,这里有 2 个重要问题
1)等待同步的线程是哪个(GC线程?) 2)如何改进这个时间?
asp.net - 我将如何能够释放 Ants Performance Software 使用的端口,以便能够重新启动我的 IIS
我在使用 Ants Performance Software 时遇到了一个问题。我用它来监控我的 IIS。我用它来监视我的 IIS 超过 8 小时。然后 Ants Performance 软件被绞死了,现在我什至无法停止它。并且该端口号也被锁定意味着 Ants Performance 没有释放该端口。所以现在即使我无法重新启动我的 IIS。因为它正在抛出消息,表明该端口正在被其他应用程序使用。请帮助任何人如何处理这个问题。谢谢。
debugging - Generate profiling information as part of a .net assembly
Is there a tool that can help me profile .net applications by generating a file and then opening the file with a viewer. I want to be able to deploy my application and it will constantly generate profiling information, then when my issue reoccurs I can examine that profiling information file.
c# - 第 1 代堆消耗 Gigs 内存作为可用空间
我们的一种产品在生产时消耗 GB 内存,这是一个长期问题。我们经常在服务器上收到内存不足的警告,今天终于有机会坐下来用内存分析器看看内存的去向。在开发中,使用相同的数据库和配置,应用程序的私有工作集为 450MB。在生产服务器上,分配给该进程的内存量为 3.7GB。
使用 Ants Memory Profiler,我确定将 2.906GB 的内存分配给第 1 代堆:
当我们从数据库加载大量数据以生成一些缓存时,这个内存量确实会在应用程序启动时得到利用。但是,这一切都被清理了,正如您可以看到上图中的所有数据都已分配但未使用的事实。这是完整的概述:
如您所见,LOH 几乎是空的,没有碎片化。我知道 LOH 不会被压缩,除非您专门将 CompactOnce 设置为适用的 GCSettings 枚举。但我的印象是 0-2 代堆确实被压缩了,应该释放空闲空间吗?或者 CLR 是否只是假设因为曾经消耗了这么多内存,应用程序应该继续寻址该内存以防它再次需要那么多内存?
对我来说,我们的应用程序应该只消耗大约 600-700MB(其中大部分是 CLR)。所以:
- 有谁知道为什么这个可用空间仍然被分配并且只在生产服务器上而不是在开发笔记本电脑上?
- 有没有办法从第 1 代堆中手动释放这个空闲内存?
c# - 一定执行时间后内存不足异常,但 C# 应用程序私有字节没有增加
我们有一个应用程序,它通过使用 NHibernate(版本 3.1.0.4000)将记录写入 SQL Server CE(版本 3.5)/(MySQL 5.7.11 社区)数据库表 [取决于配置]。
执行保存到数据库表的方法具有以下结构,因此应正确处理所有内容
经过大约一周的繁重工作(已写入数十万条记录),应用程序停止工作并引发内存不足错误。
然后:
- 使用 SQL Server CE,数据库损坏,需要手动修复
- 使用 MySQL,mysqld 守护进程已终止,需要重新启动
我们一直在通过 ANTS Memory Profiler(使用 SQL CE 配置)监控应用程序内存使用情况,但令我们惊讶的是,应用程序“私有字节”似乎根本没有增加——ANTS 和资源经理。
尽管如此,当应用程序被强制关闭时(在出现此类错误之后),任务管理器中的“物理内存使用率”从大约 80% 下降到 20-30%,并且我再次能够启动其他进程而无需获得另一个内存不足异常。
做了一些研究,我发现了这个:
我引用了关于私有字节的最后一部分:
Private Bytes 是可执行文件正在使用的内存量的合理近似值,可用于帮助缩小内存泄漏的潜在候选者列表;如果您看到这个数字不断增长且无休止地增长,您会想要检查该过程是否存在泄漏。但是,这不能证明存在或不存在泄漏。
考虑到链接主题的其余部分,据我所知,“私有字节”可能包含也可能不包含链接的非托管 dll 分配的内存,因此:
我将 ANTS 配置为还报告有关非托管内存的信息(按模块部分划分的非托管内存细分),我注意到以下 2 个模块之一(取决于特定的 sessionfactory 设置)占用越来越多的空间(具有兼容的比率大约一周后计算机内存不足):
- sqlceqp35
- MSVCR120
鉴于目前的结果,我计划进行以下测试:
- 更新休眠版本
- 试图进一步分析当前的 nhibernate sessionhelper 配置
- 创建一个没有 WPF 用户界面的空控制台应用程序(是的,此应用程序使用 WPF)我在其中放置了越来越多的代码,直到我能够重现该问题
有什么建议吗?
编辑 2016 年 6 月 30 日:
这是会话工厂初始化:
SESSION FACTORY:(自定义驱动是为了避免在 4000 字符后截断)
编辑 07/07/2016
根据要求,GetSession() 执行以下操作:
c# - 在这段代码中动态生成的程序集在哪里?
我用于生成 Excel 电子表格的混合 Excel Interop/EPPlus 应用程序在每次执行时运行速度逐渐变慢。
为了找出原因,我下载了 ANTS Memory Profiler 并运行了该应用程序。
ANTS MP 在其“加载到 CLR 中的程序集”详细信息中告诉我有 2 个动态生成的程序集。一个是在“InitializeExcelObjects()”方法中,这是有道理的,因为它创建了一个 Excel.Application 和相关对象。但是(据说?)加载程序集的第二种方法是:
...牵连的是这个:
...它没有做任何不寻常的事情(范围在代码中的所有位置都分配了,那么为什么这个被认为与其他不同并且是程序集的产生者)?
是因为这是第一次分配范围吗?完成后是否会动态加载某些程序集(仅一次)?
这是调用相关方法的代码:
这是意料之中的(因为此时程序集是动态加载的),或者这可能与正在经历的逐渐恶化的性能有关?
更新
根据 Glenn Ferrie 的评论,这种方法可能很有趣:
asp.net-mvc - 找出运行实体框架 sql 代码的代码
我已经开始使用一些实体框架分析器,例如 ANTS 和一些其他类似的替代品。Profiler 分析后,以 Entity Framework 生成的 SQL 查询格式列出所有 Entity Framework 瓶颈。但我无法跟踪代码中的哪个查询。是否有可能知道哪一行代码运行该 SQL 查询?