c# 内存释放试验

  1. 概要

1.1 概述

c# 内存自动回收,那么触发回收一定是有条件的,且定周期的监测也是一个方面。

那么内存回收的必要条件是什么呢:对象成为了垃圾对象,什么样的对象是垃圾对象呢,对象不会被别人使用了,地址==null就是这样的一个条件,但不是唯一条件。

满足了必要条件,也不一定会调用,我们能做的也仅仅就是把一个对象变成垃圾对象。且主动调用一次,那么主动调用了为什么不能马上释放呢,需要一个系统给他的时机,所以需要等。

那么现在总结一下,内存回收有一个必要条件,两个非必要条件

必要条件:对象成为垃圾对象

非必要条件:1.系统认为需要做内存回收的时机,我们主动调用了内存回收的函数。

1.2 摘要

1.2.1 内存回收并告诉系统,这个对象我已经回收完内存了,系统不用再去回收了

     GC.Collect();
     GC.SuppressFinalize(this);

1.1.2 内存回收并等待

            GC.Collect();
            GC.WaitForPendingFinalizers();
  1. 代码

using System;

namespace 内存释放试验2
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("内存释放试验2");
            A a = new A();
            a = null;
            GC.Collect();
            GC.WaitForPendingFinalizers();
            Console.ReadKey();
        }
        class A
        {
            ~A() {
                Console.WriteLine("析构函数");
            }
        }
    }
}
  1. 运行结果

  1. 附录

https://www.cnblogs.com/mq0036/p/3707257.html

https://blog.csdn.net/weixin_30640769/article/details/94905644

https://www.mianshigee.com/note/detail/137305ieq/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值