相关疑难解决方法(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万
查看次数

.NET EXE内存占用

即使是C#中的简单记事本应用程序也会消耗数百万字节的RAM,如任务管理器中所示.在最小化应用程序时,任务管理器中的内存大小显着下降,并在应用程序最大化时备份.

我在某处读到.NET进程预先为运行时分配保留了大量内存.这就是.NET应用程序开始时拥有更大内存占用的原因.但是可以使用Win32 API调用释放此内存.权衡是运行时分配变慢 - 这是真的吗?

.net

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

查找Windows应用程序的真实内存占用量

我在C#/ WPF应用程序中遇到了一些OutOfMemoryExceptions,并且在尝试分析内存使用情况时遇到了一些令人困惑的数据.

当应用程序通常运行时,Windows任务管理器将内存使用量显示为大约34 MB(在创建对象和收集垃圾时略微反弹).当我运行内存分析应用程序(如CLR ProfilerdotTrace Memory)时,它们显示总内存使用量大约为1.2 MB.

为什么这个巨大的差异?任务管理器看到这些分析器没有看到什么?

更新:我在我的应用程序中添加了一些诊断代码,以便经常通过Process类打印出各种内存信息.

在运行我的应用程序时,我在DebugDiag中设置了一个规则,以便在发生异常时执行内存转储.我强制异常并发生内存转储.此时,我的应用程序的内存使用量(由任务管理器显示)从32 MB跳到145 MB并保持不变.

您可以在下表中看到此跳转(WorkingSet64).我仍然试图理解Process类提供的所有类型的内存信息.外部应用程序如何使我的应用程序的工作集像这样增长?

这里链接到数据表.

memory windows wpf profiler

3
推荐指数
2
解决办法
6536
查看次数

标签 统计

.net ×2

memory ×2

c# ×1

memory-optimization ×1

optimization ×1

profiler ×1

windows ×1

wpf ×1