Joh*_*hey 4 .net c# garbage-collection
我的C#代码中有一行创建字体以测量字符串的长度:
int width = (int)(myGraphics.MeasureString(text, new Font(myFontName, myFontSize, FontStyle.Bold)).Width);
Run Code Online (Sandbox Code Playgroud)
我的问题是,new Font()变量何时处理?处理表格时是处理还是立即处理?
Font 宣告终结者:
~Font()
{
this.Dispose(false);
}
Run Code Online (Sandbox Code Playgroud)
创建字体对象时,它在终结队列中注册.在垃圾收集期间不会销毁这些对象(即内存保持分配) - 当终结器被调用时(btw终结器永远不会执行),它们会在以后销毁.因此,更好地Dispose手动或通过using声明.在这种情况下,将从最终化处理和取消注册字体对象(因此在垃圾回收期间将从内存中删除):
public void Dispose()
{
this.Dispose(true);
GC.SuppressFinalize(this);
}
Run Code Online (Sandbox Code Playgroud)
您可以在Jeffrey Richter的文章中阅读有关垃圾收集和完成的更多信息