我对对象的垃圾收集过程感到困惑.
object A = new object();
object B = A;
B.Dispose();
Run Code Online (Sandbox Code Playgroud)
通过仅在变量B上调用Dispose,创建的对象将不会被垃圾收集,因为对象仍然被A引用.
现在,以下代码与上面的代码相同吗?
public static image Test1()
{
Bitmap A = new Bitmap();
return A;
}
Run Code Online (Sandbox Code Playgroud)
现在我从其他方法调用这个静态函数.
public void TestB()
{
Bitmap B = Test1();
B.Dispose();
}
Run Code Online (Sandbox Code Playgroud)
静态函数Test1返回对Bitmap对象的引用.引用保存在另一个变量B中.通过调用B上的Dispose,B和对象之间的连接丢失,但从Test1传递的引用会发生什么.它将保持活动状态,直到函数TestB的范围完成?
有没有办法处理从静态函数传递的引用?
我不确定用户定义的类对象是如何被垃圾收集的.我是否需要在每个类上实现IDisposable接口并调用其上的dispose()方法来释放内存?
我在 Global.asax 的 Application_End 方法中有一些清理的东西。在IIS中回收应用程序池时,是否调用了Application_End?还是我需要将清理代码放在任何其他函数中?
我们有一个Queue和多个具有相同worker角色的实例,用于读取队列中的消息.每条消息的处理速度非常快.我们如何避免两个实例尝试在完全相同的时间点从队列中读取相同消息的情况.