Windows Server 2012上的.NET应用程序的RAM使用限制?
我目前运行到哪里使用.NET Framework V4.0 C#应用程序开始使用虚拟内存,一旦它运行 的Windows Server 256 GB RAM的服务器上使用的内存16个GB的一个问题,2012年Windows Server 2012上的.NET应用程序的RAM使用限制?
一些附加信息:
程序是使用Windows 7 Professional(64位二进制文件)上的Visual Studio 2012专业版进行编译的。
我不知道在这种环境下应该发生的RAM限制,但是 我错过了什么吗?
我也看过任何可能的原因,可能是在代码中,但我不是 确定可能导致问题。该程序使用多个Dictionary实例。 每个字典包含MyClass的数据作为其值,其中MyClass的定义为:
public MyClass
{
string a;
string b;
string c;
Dictionary<string> subDict;
}
莫非我的使用多个词典的,其各自含有某种方式 原因的内存限制内的字典?
这不是一个“服务器为什么交换”的问题,而是“为什么我的应用程序要吃这么多的RAM?”
强烈建议:
下载微软CLR探查:
你原来的问题:“为什么这台服务器使用swap甚至如果应该的话有足够的免费内存?“ - 有很多可能的原因。您需要拥有对服务器的管理权限才能确定发生了什么。这些链接可能会有所帮助:
感谢您的工具链接。仔细检查之后,我发现有一些实例使用单个Dictionary来存储海量数据。看起来我可以通过在多个字典之间划分数据来解决问题。由于该工具最有帮助,因此将其表决为答案。 – TokyoMike
单个.NET对象有al模仿2GB(与.NET 4.5中的某些数组的可配置的异常) –
字典是否符合此定义? – TokyoMike
如果您尝试创建大于2GB的对象,则会出现OutOfMemoryException。如果启用设置,则.NET 4.5支持较大的对象。 –
dtb