托管和非托管

托管和非托管主要是指内存管理和资源控制方式的不同,

托管环境中,内存管理和资源控制由运行时环境自动处理。比如.NET的CLR,和Java的JVM。开发者不需要手动管理内存的分配和释放,这些任务由托管环境负责。

特点:

1.自动内容管理:C#依赖垃圾回收机制(GC),自动处理对象的创建,管理和释放,避免内存泄露

非托管环境中,内存管理完全由开发者手动控制,开发者需要精确的分配和释放内存。如C和C++。但会拥有更高的性能和控制。

特性托管(Managed)非托管(Unmanaged)
内存管理自动(垃圾回收)手动(malloc/free)
安全性高,自动防护低,开发者负责
性能较低,但可以优化高,直接控制硬件
易用性较易,适合高层开发较难,适合底层开发
跨平台好(依赖运行时)差,需特定调整

CLR的作用:

  • 加载和执行代码。
  • 提供类型安全检查。
  • 管理内存分配。
  • 执行安全策略。
  • 支持跨语言互操作性。

GC的作用

  • GC 是 CLR 的一部分,专门负责 自动内存管理。它通过垃圾回收机制,自动回收那些不再使用的对象占用的内存,从而防止内存泄漏和优化内存使用。
  • 工作原理
    • 内存分配:GC 负责为程序中的对象分配内存。
    • 垃圾回收:GC 定期检查堆中不再被引用的对象,并释放它们占用的内存。这个过程通常是自动进行的,无需开发者手动释放内存。
  • GC 是 CLR 的子系统:GC 在 CLR 的控制下工作,负责管理托管堆中的对象生命周期。

简单来说,CLR 是一个更大的运行时环境,管理整个 .NET 应用的执行,而 GC 是 CLR 内部专门用于内存管理的模块。-

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值