相关疑难解决方法(0)

减少.NET应用程序的内存使用量?

有哪些提示可以减少.NET应用程序的内存使用量?考虑以下简单的C#程序.

class Program
{
    static void Main(string[] args)
    {
        Console.ReadLine();
    }
}
Run Code Online (Sandbox Code Playgroud)

x64的发布模式下编译并在Visual Studio外部运行,任务管理器报告以下内容:

Working Set:          9364k
Private Working Set:  2500k
Commit Size:         17480k
Run Code Online (Sandbox Code Playgroud)

如果它只为x86编译它会好一点:

Working Set:          5888k
Private Working Set:  1280k
Commit Size:          7012k
Run Code Online (Sandbox Code Playgroud)

然后,我尝试了以下程序,它执行相同但尝试在运行时初始化后修剪进程大小:

class Program
{
    static void Main(string[] args)
    {
        minimizeMemory();
        Console.ReadLine();
    }

    private static void minimizeMemory()
    {
        GC.Collect(GC.MaxGeneration);
        GC.WaitForPendingFinalizers();
        SetProcessWorkingSetSize(Process.GetCurrentProcess().Handle,
            (UIntPtr) 0xFFFFFFFF, (UIntPtr)0xFFFFFFFF);
    }

    [DllImport("kernel32.dll")]
    [return: MarshalAs(UnmanagedType.Bool)]
    private static extern bool SetProcessWorkingSetSize(IntPtr process,
        UIntPtr minimumWorkingSetSize, UIntPtr maximumWorkingSetSize);
}
Run Code Online (Sandbox Code Playgroud)

在Visual Studio外部的 …

.net c# memory optimization memory-optimization

107
推荐指数
6
解决办法
7万
查看次数

如何检测内存泄漏的位置?

我有一个大型网站似乎正在吸收正在分配的所有内存.此站点旁边的服务器上没有其他任何内容.在一周内,它会吃掉2场演出并需要重新启动.目前这是使用IIS 7的服务器2008 32位.我们重新安装使用64位并添加更多内存.能够追踪泄漏发生的位置会很好.

那么跟踪内存泄漏的最佳做法是什么?

.net c# memory-leaks

13
推荐指数
2
解决办法
1万
查看次数

64位内存不足

我试图创建以下数组

int numOfArrays = 50000;
int lengthOfArrays = 13500;

long[,] unsortedNumbers = new long[numOfArrays,lengthOfArrays];
Run Code Online (Sandbox Code Playgroud)

但我不断得出一个记忆异常.我瞄准x64,我相信我设置了大地址感知标志,看到图片,但我仍然得到错误.奇怪的是,我在同一个程序中有一个列表,消耗16gig的ram而没有任何问题.

系统:

64gig ram

高清100g免费.

c# 64-bit out-of-memory c#-4.0

4
推荐指数
1
解决办法
5387
查看次数

如何判断.Net 3.5垃圾收集器是否已运行?

我有一个创建节点树的应用程序,然后抛出它们并创建新树.

应用程序在启动时分配大约20 MB.但我尝试多次加载大型节点文件,分配的内存超过700 MB.我以为我会看到垃圾收集器有时会释放内存.

我所使用的机器有12 GB的RAM,所以可能只是分配了这么小的内存量并不重要.

我已经找到了很多关于GC如何工作的好信息,并且最好不要告诉它该做什么.但是我想验证它实际上正在做什么,并且我不会在代码中做错某事阻止我的对象被清除.

.net c# garbage-collection

2
推荐指数
1
解决办法
2056
查看次数