分配内存c#

这段C#代码展示了如何动态分配并增长一个大型字节数组,直到系统内存不足。通过不断增加数组大小并检查内存使用情况,程序可以找出系统能够处理的最大内存块。最后,释放分配的所有内存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  static void AllocBigMemoryBlock (int pass)
        {
            const int MB = 1024 * 1024;
            byte[] array = null;
            long maxmem = 0;
            int arraySize = 0;

            GC.Collect ();
            GC.WaitForPendingFinalizers ();
            while (true)
            {
                try
                {
                    arraySize += 10;
                    array = new byte[arraySize * MB];
                    array[arraySize * MB - 1] = 100;
                    GC.Collect ();
                    GC.WaitForPendingFinalizers ();
                    maxmem = GC.GetTotalMemory (true);
                    Console.Write ("Pass: {0}     Array Size (MB): {1:D4}  {2:D4}/r", pass, arraySize, Convert.ToInt32 (maxmem / MB));
                }
                catch (System.OutOfMemoryException)
                {
                    GC.Collect ();
                    GC.WaitForPendingFinalizers ();
                    maxmem = GC.GetTotalMemory (true);
                    Console.Write ("/n");
                    Console.Write ("Pass: {0} Max Array Size (MB): {1:D4}  {2:D4} {3}/r/n/n", pass, arraySize, Convert.ToInt32 (maxmem / MB), "System Out of Memory...");
                    break;
                }
                finally
                {
                    array = null;
                    GC.Collect ();
                    GC.WaitForPendingFinalizers ();
                }
            }
        } 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值