对于大型或高流量网站:
第一个问题:
将设置Object=null(不是Disposable)释放内存?或者是释放记忆的其他方式?
第二个问题:
在正常代码中是否需要显式释放内存?
不,它不会立即执行,不,如果您以正确的方式编写代码通常是不必要的.
如果你有一个实现的资源IDisposable,调用Dispose()它,甚至更好,把它放在一个using(...)块中 - 它会更快,并将释放适当的资源.如果同一作用域中有多个大对象不是COM对象或者没有实现某种形式的处理机制,请执行以下操作:
someObject = null;
GC.Collect();
Run Code Online (Sandbox Code Playgroud)
可能有所帮助,但你可能最好重组你的代码,这样你就不会在那种情况下结束.
如果你在对象超出范围之前这样做,那就完全是多余的了,会让事情变得更糟.如果您null在终结器中设置了更多内容.例如,永远不要这样做:
public void aFunction() {
SomeThing anObject = new SomeThing();
// ...
anObject = null;
}
Run Code Online (Sandbox Code Playgroud)
也不是这样
public ~MyClass() {
this.Something = null; // WRONG!
this.SomethingElse.Dispose(); // DANGEROUS!
this.SomeObject.Notify("I got finalized!"); // ALSO DANGEROUS!
}
Run Code Online (Sandbox Code Playgroud)
而且,为了完整起见,你这样做:
Marshal.ReleaseComObject(someObj);
Run Code Online (Sandbox Code Playgroud)
释放COM对象.
| 归档时间: |
|
| 查看次数: |
3554 次 |
| 最近记录: |