如题,C#使用GetFiles()获取目录下文件时,会返回一个字符串数组,由于程序运行处理的总文件数量很大,有几百万甚至上千万个,最后运行完后堆内会留下几GB甚至十几GB的字符串内存,这部分内存无论如何也释放不掉,请问有什么方法可以解决,使它能在运行完毕后清理掉这部分无效字符串内存存储?
因为是一个需要长期运行的程序,每隔一定时间就要自行对指定目录下的文件作处理,所以不得不考虑这个问题,无效内存必须可以在运行后彻底释放。每次执行时会新开一个线程调用函数进行处理,与主线程没什么关联。
C#字符串占用的堆内存无法释放问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 赵4老师 2022-04-12 13:22关注
system("dir /b /a-d c:\. >d:\allfiles.txt");
//读文件d:\allfiles.txt的内容即C:\下所有文件的名字
system("dir /b /a-d /s c:\. >d:\allfilesinsub.txt");
//读文件d:\allfilesinsub.txt的内容即C:\下所有文件的名字包含子目录
system("dir /b /ad c:\. >d:\alldirs.txt");
//读文件d:\alldirs.txt的内容即C:\下所有子目录的名字
请记住,能用shell命令获取文件、文件夹信息或者操作文件、文件夹最好用shell命令获取或者操作,而不要用各种API获取或者操作,因为当遇到非法文件夹名或非法文件名或非法文件长度、非法文件日期、压缩文件、链接文件、稀疏文件……等各种意料之外的情况时,API会处理的不全面或陷入死循环,而shell命令不会。
如果嫌system黑窗口一闪,将system("...")替换为WinExec("cmd /c ...",SW_HIDE);本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥17 pro*C预编译“闪回查询”报错SCN不能识别
- ¥15 微信会员卡接入微信支付商户号收款
- ¥15 如何获取烟草零售终端数据
- ¥15 数学建模招标中位数问题
- ¥15 phython路径名过长报错 不知道什么问题
- ¥15 深度学习中模型转换该怎么实现
- ¥15 HLs设计手写数字识别程序编译通不过
- ¥15 Stata外部命令安装问题求帮助!
- ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
- ¥15 TYPCE母转母,插入认方向