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; 
} 

莫非我的使用多个词典的,其各自含有某种方式 原因的内存限制内的字典?

+1

单个.NET对象有al模仿2GB(与.NET 4.5中的某些数组的可配置的异常) –

+0

字典是否符合此定义? – TokyoMike

+1

如果您尝试创建大于2GB的对象,则会出现OutOfMemoryException。如果启用设置,则.NET 4.5支持较大的对象。 – dtb

这不是一个“服务器为什么交换”的问题,而是“为什么我的应用程序要吃这么多的RAM?”

强烈建议:

下载微软CLR探查:

你原来的问题:“为什么这台服务器使用swap甚至如果应该的话有足够的免费内存?“ - 有很多可能的原因。您需要拥有对服务器的管理权限才能确定发生了什么。这些链接可能会有所帮助:

+0

感谢您的工具链接。仔细检查之后,我发现有一些实例使用单个Dictionary来存储海量数据。看起来我可以通过在多个字典之间划分数据来解决问题。由于该工具最有帮助,因此将其表决为答案。 – TokyoMike