我有一个简单的逻辑任务。 必须通过 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
答案 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,进入交换的方式。让操作系统处理这种情况。