对 GC.Collect() 的调用¶
ID: cs/call-to-gc
Kind: problem
Security severity:
Severity: warning
Precision: very-high
Tags:
- efficiency
- maintainability
Query suites:
- csharp-security-and-quality.qls
显式强制垃圾回收效率低下,并且在基准测试场景之外几乎不需要。
建议¶
删除对 GC.Collect()
的显式调用,并运行内存分析器以优化应用程序的内存使用。如果应用程序使用非托管资源并调用 GC.Collect()
来强制运行终结器,则最好实现 IDisposable
模式并使用 try
/finally
子句来确保即使异常中断应用程序也能释放非托管资源。
示例¶
using System;
class Bad
{
void M()
{
GC.Collect();
}
}
参考¶
MSDN:IDisposable 接口。
Microsoft:在 Visual Studio 中分析内存使用情况。