我有一个内存密集型 C# 应用程序,它与 SQL Server 驻留在同一台服务器上。
我在我的应用程序中进行了调整以限制内存缓存,并且我知道如何在我的 SQL Server 上设置(并设置)最大内存限制。
问题:当 C# 应用程序由于 SQL Server 的缓存而想要使用比可用内存更多的内存时,我的应用程序会大大减慢,大概是为了冒险进入虚拟内存空间。大多数情况下,我可以通过观察有多少可用 RAM 并在我的自定义 C# 代码(是否缓存到 RAM 和/或 SQL Server)和 SQL Server 的设置中设置适当的值来防止这种情况。
但是:有时由于机器上的其他进程、典型的操作系统需求波动等原因,机器的内存使用量超出了我的视线范围。
我注意到 SQL Server 通常会为其他进程(例如 Chrome、MS Word)提供 RAM ......我的进程似乎没有这样做。我有一种直觉,我的 C# 应用程序没有积极使用 SQL Server 中的所有缓存数据......
那么,我如何检测 SQL Server 何时不会为我的应用程序提供 RAM 和/或我如何检测我的应用程序何时无法分配额外的物理 RAM 字节?