社区
C#
帖子详情
C#中的自定义对象怎么释放?
lileammm
2007-01-04 09:48:42
public class Foo
{
public string name;
}
Foo foo = new Foo();
foo.name="tata";
//使用
//使用完了后想立即释放foo在堆中的内存,怎么释放?
...全文
895
17
打赏
收藏
C#中的自定义对象怎么释放?
public class Foo { public string name; } Foo foo = new Foo(); foo.name="tata"; //使用 //使用完了后想立即释放foo在堆中的内存,怎么释放?
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lileammm
2007-01-04
打赏
举报
回复
谢谢大家!
foo = null;
GC.Collect();
这个答案好像可以。
viena
2007-01-04
打赏
举报
回复
//先
foo = null;
viena
2007-01-04
打赏
举报
回复
.Dispose方法用于释放非托管资源,与释放内存无关~
lileammm
2007-01-04
打赏
举报
回复
GC.Collect();//强制对所有代进行垃圾回收---foo对象GC怎么识别它是垃圾呢?实际上我调用万了这句话后,foo对象还是生存的。
实现IDisposable接口,我的Foo类很简单,没有什么资源可以释放,只有其foo本身所占用的内存,怎么释放?
alexanda2000
2007-01-04
打赏
举报
回复
实现IDisposable接口,里面有个Dispose方法。在这个方法里释放对象中的资源。用完之后手工调用Dispose就行了。有一些注意事项,MSDN里有很详细的讲解的。
viena
2007-01-04
打赏
举报
回复
GC.Collect();//强制对所有代进行垃圾回收
viena
2007-01-04
打赏
举报
回复
GC.Collect;//强制对所有代进行垃圾回收
viena
2007-01-04
打赏
举报
回复
stackalloc只能用于非托管类型
如
Char * pc = stackalloc Char[10];
//因为是指针类型,要放在Unsafe块内
lileammm
2007-01-04
打赏
举报
回复
liujia_0421(SnowLover) :
我想由我来决定GC什么时候回收堆的内存,就是想迅速结束那个自定义对象的生命,可以么?
lileammm
2007-01-04
打赏
举报
回复
viena(维也纳nn-下潜15米,潜望镜升起):
stackalloc怎么加呢?如果我一定要动态释放,是不是不支持?
liujia_0421
2007-01-04
打赏
举报
回复
可以不用理,GC会自动回收的..
golderer
2007-01-04
打赏
举报
回复
我想垃圾收集器会自动回收吧
viena
2007-01-04
打赏
举报
回复
而托管对象的内存只能由GC来自动回收
viena
2007-01-04
打赏
举报
回复
需要unsafe上下文
viena
2007-01-04
打赏
举报
回复
用stackalloc关键字
在堆栈上分配内存块,此内存不受垃圾回收的制约,在方法返回后自动释放
shinaterry
2007-01-04
打赏
举报
回复
直接关闭
foo.Close();
C#
LIFOPool
对象
池
C#
LIFOPool
对象
池 代码 public class LIFOPool<T> : IPool<T>, IFreeness where T : class { #region NestedTypes internal struct LIFOEntry { ...
C#
基础才是重
中
之重~
对象
的生与死
为何要写 之所以写这篇文章,完全是因为学生们在实际开发
中
遇到的问题,一个
对象
占用的内存空间总不被
释放
,导致系统内存不断攀升,其最主要原因是我们对“
对象
的生与死”不清楚,或者从来没有认真去考虑过这件事,确实一个
对象
在被声音,初始化,使用或者最后被系统回收,整个的过程与我们关系确实不大,我们开发人员直接用就行了,对于
C#
这种托管语言你没必要去自己回收它,但有时,我们多了解一点系统的回收...
C#
WinForm程序退出机制与资源
释放
全解析
在
C#
WinForm开发
中
,程序退出远不止关闭窗口那么简单,其核心在于确保所有资源被正确
释放
,避免内存泄漏。理解托管与非托管资源的区别是基础,.NET的垃圾回收器(GC)能自动管理托管内存,但文件句柄、数据库连接、GDI+
对象
等非托管资源必须通过Dispose模式手动
释放
。Application.Exit()与Form.Close()的本质区别在于前者触发整个应用程序的有序退出流程,后者仅关闭单个窗体,错误使用易导致资源残留。在工程实践
中
,结合using语句可简化资源管理,而事件订阅不当则可能引发隐蔽的内
C#
如何进行
对象
的销毁和资源的
释放
?
1。
对象
的销毁不需要程序员来关心,垃圾回收机制会负责监控
对象
的使用状态,
对象
如果不被使用,则垃圾回收会在一定的内存使用情况下(一般是CLR认为内存不足,需要进行内存
释放
的时候),启动回收机制。 2。
对象
在销毁之前,需要进行不同的操作(因为有可能程序员希望在销毁之前
释放
文件句柄或者数据库连接),所以可以适用
对象
的Finalize方法来
释放
这些资源(但在
C#
中
,不允许这样操作,因此这句话为废话
C#
中
的
对象
资源
释放
c#
自身对于所有托管
对象
(managed object)都是可以不用程序员去干预的(注:可以不用干预,当然资源耗费很多且必要时也可以去做一些干预来提升程序性能,比如通过代码部分控制垃圾回收),但对于非托管资源(文件、流、数据库连接、GDI+
对象
、COM
对象
等等)都需要程序来控制资源的
释放
。
释放
资源主要有两种方式,其一是
对象
实现IDisposable接口,由程序员调用IDisposable.D...
C#
111,128
社区成员
642,535
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章