我使用一个用 .NET 编写的流控制系统,该系统通过 TCP 连接与外部系统交互,并在不同端点之间路由事务。
我的问题:
在启动/初始化时,私有工作集内存级别约为 25000KB。在系统处于空闲状态时初始化后,私有工作集以大约每秒 50-100KB 的速度递增,直到达到大约 57000KB 的限制。
信息:
系统在增量期间生成页面错误。
当达到限制时,当我连接 +300 个客户端并交换几个小时的高频事务时,私有工作集保持非常稳定并以几 MB 上下波动,垃圾收集的逻辑非常有效。
我已经使用 Redgate 的一个名为“Memory Profiler”的工具对这个系统进行了分析,它告诉我在初始化后内存增加是由非托管代码分配的,不幸的是,这个分析器不支持对非托管代码分配的内存的洞察,所以我很难找出分配的内存包含什么,分配的原因以及分配内存的代码。
整个代码库是用 C# 开发的,没有对 COM+ 程序集的引用,也没有与本机 Windows API 的通信(在此内存的增量期间)。
我的问题:
我需要指出正确的方向,以找出为什么内存在初始化后以小块连续递增到特定级别。