2015-04-05 72 views
0

每当我运行我的应用程序时,我的应用程序内存不足。我去了app.config并启用gcAllowVeryLargeObjectsC#内存问题

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <startup> 
     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 
    </startup> 

    <runtime> 
     <gcAllowVeryLargeObjects enabled ="true"/> 
    </runtime> 
</configuration> 

此外,我改变所有的双打浮动。现在我想知道如何将整个项目改为64位进程。当我创建一个新项目时,我看不到这样做的能力。这可能吗?我是VS和C#的新手,所以我不是100%精通导航。有任何想法吗?

我通过测试了我的工艺类型:

if (Environment.Is64BitProcess) 
     Console.WriteLine("64"); 
    else 
     Console.WriteLine("32"); 
+0

勾去掉*身高32位*复选框,并保留* AnyCPU * ,或者只是将* x64 *设置为平台。但在实际完成之前,请获取内存分析器并确保一切正确。除非你处理数量很多的数据,否则不应该把内存移出一个正常的用例。也许你做错了什么。 – 2015-04-05 20:55:53

+0

每次都发生在同一个地方吗?有时候这个错误并不代表你的想法。如果您是C#/ NET的新手,可能是资源泄漏。 – Plutonix 2015-04-05 21:02:40

+1

应该更重要的是弄清楚为什么你的应用程序内存不足,而不是如何将其配置为64位。你的记忆问题有两个主要原因。 1)您的应用程序正在泄漏内存,并且2)您的应用程序正在使用大量内存。既然你不是说任何关于你的想法为什么你的应用程序内存不足的问题,我的下注是在nbr上。 1,你的应用程序正在泄漏内存。因此,将其配置为64位只会延长其使用寿命,但随后会出现内存问题。 – 2015-04-05 21:11:17

回答

2

你可以编译32位和64位架构。这是如何改变这个值:

  • 右键单击您的项目在项目视图
  • 选择属性
  • 转到建设
  • 平台目标,选择。

enter image description here

2

你的应用程序有哪些,你不要被它改变64个工或改变双打花车解决可能不同的问题。使用属于Visual Studio 2013社区版的内存分析器。

如果您是C#的新手,我无法想象您已经编写了这么大的对象。

这样的内存问题可以通过内存泄漏,或例如分配过大的位图(溢出的宽度或高度)或其他任何造成的......