我想做的是将一些可能泄漏的可疑函数包装在using语句中以触发垃圾回收,是否有人使用过或看过这样的东西?这有用吗?你对此有什么看法?
using (String wrapper = new String("maybe this will trigger gc")){
//do stuff here
//or maybe:
// function1();
// function2();
//
//and then see if its leaking?
// eg:
_mygeometry = new Geometry();
_mygeometry = null; // will GC free this ?
}
Run Code Online (Sandbox Code Playgroud)
你认为这会奏效吗?你之前用过这个吗?有什么我可以做的不是一个字符串?我使用WPF,我尝试使用(var garbage = 1){}并且不起作用,我想String可能会.
using语句仅适用于那些实现IDisposable的类.它只是确保你在set中定义的对象在执行块之后using()调用它的Dispose方法,或者甚至在发生某些异常时调用它.这仅仅是类似于使用try与finally块.
如果您怀疑应用程序中存在内存泄漏,那么如果您使用一些可用的内存分析器来检测问题则会更好.
您的当前代码不应该编译,因为String类没有实现IDisposable
编辑:
自编辑后的问题
_mygeometry = null; // will GC free this ?
Run Code Online (Sandbox Code Playgroud)
你应该看到这个SO链接: C#:应该将对象变量赋值为null吗? 并从VinayC回答
| 归档时间: |
|
| 查看次数: |
2449 次 |
| 最近记录: |