using语句 - 是否会触发垃圾回收?

jef*_*eat 0 c# memory

我想做的是将一些可能泄漏的可疑函数包装在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可能会.

Hab*_*bib 7

using语句仅适用于那些实现IDisposable的类.它只是确保你在set中定义的对象在执行块之后using()调用它的Dispose方法,或者甚至在发生某些异常时调用它.这仅仅是类似于使用tryfinally块.

如果您怀疑应用程序中存在内存泄漏,那么如果您使用一些可用的内存分析器来检测问题则会更好.

您的当前代码不应该编译,因为String类没有实现IDisposable

编辑:

自编辑后的问题

_mygeometry = null; // will GC free this ?
Run Code Online (Sandbox Code Playgroud)

你应该看到这个SO链接: C#:应该将对象变量赋值为null吗? 并从VinayC回答