相关疑难解决方法(0)

C#线程不释放内存

我有一个用C#.Net编写的Windows服务.服务启动后,我生成一个新线程,如下所示

new Thread(new ThreadStart(Function1)).Start();
Run Code Online (Sandbox Code Playgroud)

这个线程无限循环并执行我的服务所期望的职责.每天一次,我需要同时执行一个不同的操作,我的线程会生成第二个线程,如下所示

new Thread(new ThreadStart(Function2)).Start(); 
Run Code Online (Sandbox Code Playgroud)

第二个线程执行一个非常简单的功能.它使用FileReadAllLines读取文本文件的所有行,快速处理此信息并退出.

我的问题是没有收集读取文件的第二个线程使用的内存.我让我的服务运行了3个小时,希望GC会被调用,但什么也没发生,任务管理器仍然显示我的服务正在使用150mb的内存.读取和处理文本文件的功能非常简单,我确信没有对包含文本的字符串数组的隐藏引用.有人可以解释为什么会这样吗?是否有可能由另一个衍生线程生成的线程无法自行清理?

谢谢

c# multithreading memory-management

4
推荐指数
2
解决办法
5034
查看次数

标签 统计

c# ×1

memory-management ×1

multithreading ×1