我正在尝试在有限的内存情况下测试我的代码的错误处理.我也很想知道在低内存情况下(GC可能必须更频繁地运行)代码性能如何受到影响.有没有一种方法可以在内存有限的情况下运行.Net应用程序(或NUnit测试套件)?我知道...

我正在尝试在有限的内存情况下测试我的代码的错误处理.
我也很想知道在低内存情况下(GC可能必须更频繁地运行)代码性能如何受到影响.
有没有一种方法可以在内存有限的情况下运行.Net应用程序(或NUnit测试套件)?我知道使用Java可以限制JVM可以访问的内存量-.Net中是否存在类似内容?
解决方法:
这不是CLR中的选项.内存的管理方式非常不同,.NET进程中至少有10个不同的堆. .NET程序可以不受限制地使用Windows进程中可用的整个虚拟内存空间.
最简单的方法是在程序启动时分配内存.您必须小心一点,不能一口吞下太多,地址空间是零散的,因为它包含不同地址的代码和数据的混合.内存是从它们之间的漏洞分配的.要使可用地址空间受到严重影响,您必须至少分配一个千兆字节,而单次分配是不可能的.
因此,只需使用循环来分配较小的块,例如一次分配一个兆字节:
private static List<byte[]> Gobble = new List<byte[]>();
static void Main(string[] args) {
for (int megabyte = 0; megabyte < 1024; megabyte++)
Gobble.Add(new byte[1024 * 1024]);
// etc..
}
请注意,这非常快,分配的地址空间只是保留的,不占用任何RAM.
织梦狗教程
本文标题为:c#-对CLR施加内存限制


基础教程推荐
猜你喜欢
- C#使用GDI+实现生成验证码 2023-06-08
- C#异步编程之async/await详解 2023-07-18
- 浅谈Visual Studio 2019 Vue项目的目录结构 2023-02-08
- 浅谈C# async await 死锁问题总结 2023-03-13
- unity实现鼠标经过时ui及物体的变色操作 2023-04-10
- C#沉淀之委托的深入讲解 2022-12-31
- 基于C#实现图片滑动验证码的示例代码 2023-05-30
- 在Winform程序中使用Spire.Pdf实现页面添加印章功能的实现 2023-03-09
- C#实现串口调试工具 2023-05-16
- c# – 自动将Windows服务部署/安装到多个远程端点的最佳方法? 2023-09-20