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

内存限制:1 MB C#应用程序,c#,.net,C#,.net,我有一个小而简单的logick任务。 必须通过C#实现(而不是C++)。 但根据要求: 时限:1000毫秒 内存限制:1 MB 想不到怎么,, 当我尝试计算最简单的控制台应用程序时 using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; namespace Task4 { class Program {

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

想不到怎么,, 当我尝试计算最简单的控制台应用程序时

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的内存!!! 如何根据要求设置内存限制:1MB??? 这到底意味着什么? 请帮帮我 :)

我真的不能分享“任务细节”,但我有4个任务,并且在所有这些任务中,按要求-时间限制:1000毫秒
内存限制:1MB

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

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


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

如果你真的想让.NET在小空间中工作,你可以看看Michal Strehovský的文章。他在8kB、DOS、Windows3.11等环境下运行.NET,做了很多了不起的事情


好吧,加载的.NET Framework本身已经积累了一点内存,因此在如此低的约束条件下运行应用程序和使用框架很可能不是件小事。我假设约束条件是任务/算法,而不是整个应用程序,因为这是不可能的。如何证明约束取决于任务是什么。回到设定这些要求的人那里,问他们这些要求是什么意思,显然,您当前的解释不可能正确,但internet上的随机用户不太可能猜到正确的解释可能是什么。也许这只是分配?我得到的最小值是1496KB(每个Process Explorer的专用工作集)通过使用.Net 4.8并删除所有引用和注释assemblyinfo.cs。也许csproj文件中有些东西我可以删除,但我失去了兴趣。NET2.0和Core5.0使用了更多内存。