我想我最近在某处读到(甚至可能在 SO 上,但我找不到问题)在调试 session 中,在 VS 中按停止只会终止进程并且不会发生 GC。但是,关闭应用程序窗口通常会按预期执行 GC。
这是正确的吗?
此外,当(非调试)进程在任务管理器中被终止时会发生什么 - GC 是否仍在清理?
最佳答案
如果您终止进程,操作系统将清理进程的内存,但 .NET 运行时内不会发生 GC,也不会运行终结器。
编辑:(以上只有在您终止进程时才是正确的,如果您使用“结束任务”则不是)
如果您发送“结束任务”,那么它会向程序发送适当的 WM_CLOSE 窗口消息,并且不会立即终止进程,.NET 可以正常关闭。
编辑:(又一个附录)
如果停止调试,大致相当于TerminateProcess()
,会立即关闭进程。
关于c# - 如果您在任务管理器中结束进程,GC 是否仍会清理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/689146/