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