C#垃圾回收机制内存的释放

C#中在谈到垃圾回收时,所说的“COM对象本身存在于自己的进程中,这句话大家是杂么理解的?
...全文
197 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 3 楼 shencb 的回复:
这句话里有三个概念: 1)进程(每个exe对应于自己的一个PCB,即进程) 2)Com对象(系统层面的一种组件模型,独立运行于自有的进程内,相当于一个exe) 3).net程序(.net程序自身的一个进程,即编译后的exe程序,该进程以CLR为基础管理托管代码运行所需内存) 再来看垃圾回收: 垃圾回收:是指CLR,对于托管堆(.net平台上的内存)上的对象,……
谢谢,讲解的很形象,多谢••••••
dacan66 2012-11-07
  • 打赏
  • 举报
回复
这句话里有三个概念: 1)进程(每个exe对应于自己的一个PCB,即进程) 2)Com对象(系统层面的一种组件模型,独立运行于自有的进程内,相当于一个exe) 3).net程序(.net程序自身的一个进程,即编译后的exe程序,该进程以CLR为基础管理托管代码运行所需内存) 再来看垃圾回收: 垃圾回收:是指CLR,对于托管堆(.net平台上的内存)上的对象,进行释放,从而内存回收. 即在3)情况下,对所运行的程序,进行内存管理。 再想像一下com对象,com独立于.net程序,在自身的进程中运行, 那么CLR是管不到的。 所以就是“COM对象本身存在于自己的进程中”
  • 打赏
  • 举报
回复
引用 1 楼 Jia_H 的回复:
简单的讲就是说:COM对象不是垃圾回收(GC)的事。GC处理的是Managed对象,COM对象是属于unmanaged的,是自己管理的,GC不管。 一个例子就是内存泄露(memory leak),如果缺少对申请内存的释放,必然导致内存越用越少。对于Managed对象不会有这类问题,因为GC会定期处理检查释放对象。
有启发,很详细,谢谢....有时候这些语言还真是需要高手来解读,来斟酌.....
Jia_H 2012-11-07
  • 打赏
  • 举报
回复
简单的讲就是说:COM对象不是垃圾回收(GC)的事。GC处理的是Managed对象,COM对象是属于unmanaged的,是自己管理的,GC不管。 一个例子就是内存泄露(memory leak),如果缺少对申请内存的释放,必然导致内存越用越少。对于Managed对象不会有这类问题,因为GC会定期处理检查释放对象。

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧