【发布时间】:2019-12-07 04:30:29
【问题描述】:
在 C# 中是否有任何锁定或分配内存的选项?
场景 1: 在我的虚拟机中,有 16GB RAM,为了进行测试,我需要使用 8GB RAM,因此 8GB 对于操作系统和其他应用程序将保持“空闲”
场景 2: 相同的虚拟机有 16GB RAM,现在我需要使用 14GB RAM。
目前,我创建了一个内存泄漏函数,但这并不好,因为它会占用我虚拟机的所有内存。
List<byte[]> memoryUsage = new List<byte[]>();
while (true)
{
try
{
memoryUsage.Add(new byte[1024]);
}
catch (OutOfMemoryException)
{
throw;
}
}
分配或锁定用户(我)将输入到文件的 RAM,例如 我想分配/锁定 8GB RAM,程序分配/锁定 8GB RAM,8GB RAM 将保持“空闲”状态
【问题讨论】:
-
“它从我的虚拟机中占用了所有内存”——不过,显然只是因为你没有做任何事情来限制它分配的内存量。为什么不分配更少的内存? C# 可以分配内存,就像您在上面所做的那样。使用不安全的代码,您可以锁定(或“锁定”)它。使用 p/invoke,您可以调用系统 API 来独立于基于 CLR 的代码来管理内存。但你的问题不清楚。您希望能够使用“已分配”/“锁定”的内存吗?或者只是消耗它,所以它不能用于其他东西?这里的实际目标是什么?
-
只消耗那块内存,这样它就不能被其他东西使用了。
标签: c# memory memory-management