c# - 如果您在任务管理器中结束进程,GC 是否仍会清理?

标签 c# garbage-collection

我想我最近在某处读到(甚至可能在 SO 上,但我找不到问题)在调试 session 中,在 VS 中按停止只会终止进程并且不会发生 GC。但是,关闭应用程序窗口通常会按预期执行 GC。

这是正确的吗?

此外,当(非调试)进程在任务管理器中被终止时会发生什么 - GC 是否仍在清理?

最佳答案

如果您终止进程,操作系统将清理进程的内存,但 .NET 运行时内不会发生 GC,也不会运行终结器。

编辑:(以上只有在您终止进程时才是正确的,如果您使用“结束任务”则不是)

如果您发送“结束任务”,那么它会向程序发送适当的 WM_CLOSE 窗口消息,并且不会立即终止进程,.NET 可以正常关闭。

编辑:(又一个附录)

如果停止调试,大致相当于TerminateProcess(),会立即关闭进程。

关于c# - 如果您在任务管理器中结束进程,GC 是否仍会清理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/689146/

相关文章:

c# - 是否有用于获取对象的所有属性和值的内置 .NET 方法?

c# - 在 SqlDataAdapter 中防止 SQL 注入(inject)的最佳方法

java - Java 的 interned 字符串会被 GC 吗?

garbage-collection - D 垃圾收集器 - 估计运行频率和运行时长?

java - 线程终止时jvm是否释放线程的堆栈

java - G1 GC 中的内存分配

java - Android 中的静态场生命周期

c# - 具有 BindingList<T> 和 DataGridView 的多线程 C# 应用程序

c# - 使用语句不能正常工作

c# - 使用什么对象来锁定来自单个 session 的线程(来自单个连接的用户)