jim*_*im 6 .net c# memory-management
我听说即使你已经完成它,C#也不会马上释放内存.我可以强制C#释放内存吗?
我正在使用Visual Studio 2008 Express.那有关系吗?
PS我没有遇到C#的问题以及它如何管理内存.我只是好奇.
Jas*_*n D 19
吉姆
你没听错.它通过一种称为垃圾收集器的机制定期清理内存.您可以通过下面的调用"强制"垃圾收集.
GC.Collect();
Run Code Online (Sandbox Code Playgroud)
我强烈建议你阅读关于垃圾收集的这篇MSDN文章.
编辑1:"强制"在引号中.更明确的另一张海报是,这真的只是暗示它.你无法在特定的时间点实现它.因此,链接到.Net中关于垃圾收集的文章
编辑2:我意识到这里的每个人只能直接回答你的主要问题.至于你的第二个问题.使用Visual Studio 2008 Express仍将使用.net框架,它执行垃圾收集.因此,如果您升级到专业版,您仍将拥有相同的内存管理功能/限制.
编辑3:关于终结器的这个维基百科aritcles提供了一些关于在终结器中适当做什么的好指示.基本上,如果您正在创建一个可以访问关键资源的对象,或者您正在使用这样的对象,请实现IDispose和/或利用using语句.即使抛出异常,Using也会自动调用Dispose方法.这并不意味着你不需要给运行终结器提示......
您不能强制 C#释放内存,但您可以通过调用请求 CLR释放未引用的对象
System.GC.Collect();
Run Code Online (Sandbox Code Playgroud)
有一种方法WaitForPendingFinalizers将"挂起当前线程,直到处理终结器队列的线程清空该队列".虽然你不应该打电话给它.
正如其他人建议前往MSDN获取更多信息.
| 归档时间: |
|
| 查看次数: |
30848 次 |
| 最近记录: |