如题,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);本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 PADS Logic 原理图
- ¥15 PADS Logic 图标
- ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
- ¥20 气象站点数据求取中~
- ¥15 如何获取APP内弹出的网址链接
- ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
- ¥50 STM32单片机传感器读取错误
- ¥15 (关键词-阻抗匹配,HFSS,RFID标签天线)
- ¥15 机器人轨迹规划相关问题
- ¥15 word样式右侧翻页键消失