C#内存问题

C#内存问题,c#,C#,每次运行应用程序时,我的应用程序都会耗尽内存 我转到app.config并启用了gcAllowVeryLargeObjects <?xml version="1.0" encoding="utf-8" ?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> </start

每次运行应用程序时,我的应用程序都会耗尽内存

我转到app.config并启用了
gcAllowVeryLargeObjects

<?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>

您可以针对32位和64位体系结构进行编译。以下是如何更改该值:

  • 在项目视图中右键单击项目
  • 选择属性
  • 建造
  • 在平台目标下,选择x64

您可以针对32位和64位体系结构进行编译。以下是如何更改该值:

  • 在项目视图中右键单击项目
  • 选择属性
  • 建造
  • 在平台目标下,选择x64

您的应用程序可能存在不同的问题,您无法通过将其更改为64进程或将双精度更改为浮点来解决这些问题。使用内存探查器,它是Visual Studio 2013社区版的一部分

如果你是C#新手,我无法想象你会写这么大的东西


此类内存问题可能是由内存泄漏或例如分配太大的位图(宽度或高度溢出)或其他任何原因造成的。

您的应用程序可能存在不同的问题,您无法通过将其更改为64进程或将双精度更改为浮点来解决。使用内存探查器,它是Visual Studio 2013社区版的一部分

如果你是C#新手,我无法想象你会写这么大的东西


此类内存问题可能是由内存泄漏或例如分配太大的位图(宽度或高度溢出)或其他任何原因造成的。

取消选中首选32位复选框并保留任何CPU,或仅将x64设置为平台。但在实际执行此操作之前,请使用内存分析器并确保所有内容都正确无误。除非处理大量数据,否则内存不足不应该是正常的用例。也许你做错了什么。每次都是在同一个地方发生吗?有时候这个错误并不代表你的想法。如果您是C#/NET新手,则可能是资源泄漏。了解应用程序内存不足的原因比了解如何将其配置为64位更为重要。你的记忆问题有两个主要原因。1) 您的应用程序正在泄漏内存,2)您的应用程序正在使用大量内存。既然你没有说任何关于为什么你的应用程序内存不足的想法,我打赌是nbr。1,您的应用程序正在泄漏内存。因此,将它配置为64位只会在某种程度上延长它的寿命,它仍然会在以后的某个时候因内存问题而崩溃。我知道,但它是一个递归程序,创建了大量列表和字符串。我需要使用内存分析器来找出瓶颈所在。所以我运行了一个内存分析器,看起来c#中的数据表占用了我很多内存。这有意义吗?在我目前的例子中,在执行过程中的不同时间点创建了9000多个数据表。在这里,我认为是列表和字符串…取消选中首选32位复选框并保留AnyCPU,或者只是将x64设置为平台。但在实际执行此操作之前,请使用内存分析器并确保所有内容都正确无误。除非处理大量数据,否则内存不足不应该是正常的用例。也许你做错了什么。每次都是在同一个地方发生吗?有时候这个错误并不代表你的想法。如果您是C#/NET新手,则可能是资源泄漏。了解应用程序内存不足的原因比了解如何将其配置为64位更为重要。你的记忆问题有两个主要原因。1) 您的应用程序正在泄漏内存,2)您的应用程序正在使用大量内存。既然你没有说任何关于为什么你的应用程序内存不足的想法,我打赌是nbr。1,您的应用程序正在泄漏内存。因此,将它配置为64位只会在某种程度上延长它的寿命,它仍然会在以后的某个时候因内存问题而崩溃。我知道,但它是一个递归程序,创建了大量列表和字符串。我需要使用内存分析器来找出瓶颈所在。所以我运行了一个内存分析器,看起来c#中的数据表占用了我很多内存。这有意义吗?在我目前的例子中,在执行过程中的不同时间点创建了9000多个数据表。这里我以为是列表和字符串。。。
   if (Environment.Is64BitProcess)
        Console.WriteLine("64");
    else
        Console.WriteLine("32");