相关疑难解决方法(0)

CreateFileMapping,MapViewOfFile,如何避免占用系统内存

我正在开发一个针对桌面系统的应用程序,它可能只有256MB RAM(Windows 2000及更高版本).在我的应用程序中,我有这个大文件(> 256MB),其中包含大约160字节/每个的固定记录.这个应用程序有一个相当漫长的过程,随着时间的推移,它将随机访问大约90%的文件(用于读写).任何给定的记录写入距离读取该特定记录的记录访问量不会超过1,000(我可以调整此值).

我有两个明显的选择:常规I/O(FileRead,FileWrite)和内存映射(CreateFileMapping,MapViewOfFile).后者在具有足够内存的系统中应该更有效率,但在具有低内存的系统中,它将换掉大多数其他应用程序的内存,这在我的应用程序中是禁止的.有没有办法让这个过程不占用所有内存(例如,强制刷新我不再访问的内存页面)?如果这是不可能的,那么我必须回到常规I/O; 我本来希望在写入部分使用重叠I/O(因为访问是如此随机),但是文档说小于64K的写入总是同步提供.

欢迎任何改进I/O的想法.

windows performance file-io memory-management

12
推荐指数
1
解决办法
2万
查看次数

在卸载的文件上执行mmap()后避免崩溃

我正在对可以卸载的文件执行mmap()(该文件位于用户可以随时删除的USB设备上),如果文件已卸载,我的应用程序崩溃然后我尝试访问任何元素在缓冲区.

对此有何解决方案?

c unix kernel mmap

5
推荐指数
2
解决办法
2554
查看次数

标签 统计

c ×1

file-io ×1

kernel ×1

memory-management ×1

mmap ×1

performance ×1

unix ×1

windows ×1