我将 C# 2.0 用于多线程应用程序,该应用程序每秒从非托管 dll 接收至少一千次回调,并定期从套接字发送消息。GUI 保留在主线程上。
我的应用程序主要在启动时创建对象,并在执行期间定期创建对象,时间很短。
我遇到的问题是周期性的延迟峰值(通过在开始和结束时给函数加时间戳来测量),我想这在 GC 运行时会发生。
我跑了 perfmon,这是我的观察结果......
Gen0 堆大小是平坦的,每隔几秒就会出现一个峰值,并带有周期性峰值。
Gen1 堆大小始终在滚动。上和下
Gen2 堆大小遵循一个循环。它不断增加,直到它变平一段时间然后下降。
Gen 0 和 1 Collections 总是在 1 到 5 个单位的范围内增加。第 2 代系列是不变的。