内存限制:1 MB C# 应用程序

时间:2021-02-11 10:43:52

标签: c# .net

我有一个简单的逻辑任务。 必须通过 C#(不是 C++)实现。 但按要求: 时间限制:1000 毫秒 内存限制:1 MB

无法想象如何TO, 当我尝试计算最简单的控制台应用程序时

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;

namespace Task4
{
    class Program
    {
        static void Main(string[] args)
        {
            // get the current process
            Process currentProcess = System.Diagnostics.Process.GetCurrentProcess();
            Console.WriteLine("Memory used in MB = " + currentProcess.WorkingSet64 / 1024 / 1024);
            Console.WriteLine("Time used in milliseconds = " + (int)currentProcess.TotalProcessorTime.TotalMilliseconds);
            Console.ReadKey();
            return;
        }
    }
}

我已经有 15MB 了!!! 如何根据要求设置内存限制: 1 MB ??? 它的真正含义是什么? 请帮我 :)

我真的不能分享“任务详细信息”,但我有 4 个任务,所有这些都符合要求 - 时间限制:1000 毫秒 内存限制:1 MB

2 个答案:

答案 0 :(得分:0)

如果您真的想让 .NET 在小空间中工作,您可以查看 Michal Strehovský 的文章。他让 .NET 在 8kB、DOS、Windows 3.11 等系统中运行,做出了惊人的事情。

https://medium.com/@MStrehovsky/building-a-self-contained-game-in-c-under-8-kilobytes-74c3cf60ea04

答案 1 :(得分:-1)

我不是专家,但在 1MB 或以下运行 C# 应用程序似乎是不可能的。正如 jAC 所说,.NET 框架本身已经积累了一些内存。

您无法真正限制内存使用量。您只能限制保留的内存量。剩余的内存是否被释放取决于垃圾收集器。

但是,如果您在进程中强制进行更多的磁盘访问,人为地限制应用程序占用的内存量可能会大大增加处理时间。如果有人在内存受限的系统上运行,他们很可能已经有用于交换的磁盘流量——如果你在真正完成之前人为地转储内存,你只会进一步促进磁盘 IO,进入交换的方式。让操作系统处理这种情况。