相关疑难解决方法(0)

正确使用IDisposable接口

我从阅读MSDN文档中了解到,IDisposable接口的"主要"用途是清理非托管资源.

对我来说,"非托管"意味着数据库连接,套接字,窗口句柄等等.但是,我已经看到了Dispose()实现该方法以释放托管资源的代码,这对我来说似乎是多余的,因为垃圾收集器应该照顾那对你而言.

例如:

public class MyCollection : IDisposable
{
    private List<String> _theList = new List<String>();
    private Dictionary<String, Point> _theDict = new Dictionary<String, Point>();

    // Die, clear it up! (free unmanaged resources)
    public void Dispose()
    {
        _theList.clear();
        _theDict.clear();
        _theList = null;
        _theDict = null;
    }
Run Code Online (Sandbox Code Playgroud)

我的问题是,这是否使得垃圾收集器可以使用的内存MyCollection比通常更快?

编辑:到目前为止,人们已经发布了一些使用IDisposable清理非托管资源(例如数据库连接和位图)的好例子.但是假设_theList在上面的代码中包含了一百万个字符串,并且你想现在释放那个内存,而不是等待垃圾收集器.上面的代码会实现吗?

.net c# garbage-collection idisposable

1586
推荐指数
12
解决办法
31万
查看次数

静态成员是否会收集垃圾?

静态成员变量是否会被垃圾收集?

例如,让我们使用以下类.

public class HasStatic {
    private static List<string> shared = new List<string>();

}
Run Code Online (Sandbox Code Playgroud)

并且假设它像这样使用:

//Startup
{
HasStatic a = new HasStatic();
HasStatic b = new HasStatic();
HasStatic c = new HasStatic();
HasStatic d = new HasStatic();
//Something
}
//Other code
//Things deep GC somewhere in here
HasStatic e = new HasStatic();
Run Code Online (Sandbox Code Playgroud)

a,bc,以及d垃圾收集时,静态成员是否也shared被收集?可能e会得到一个新的实例shared

c# garbage-collection static-members

44
推荐指数
2
解决办法
2万
查看次数

垃圾收集器何时擦除使用Singleton模式的对象的实例?

垃圾收集器何时擦除使用Singleton模式的对象的实例?

对象是否比常规对象更长时间?

如何在Java中手动强制删除/垃圾回收?

谢谢.

java singleton garbage-collection design-patterns

32
推荐指数
3
解决办法
9900
查看次数

静态成员的垃圾收集

静态成员是否会被垃圾收集器收集?

.net garbage-collection

10
推荐指数
2
解决办法
3559
查看次数