首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关闭文件句柄是否释放Windows中的关联内存?

关闭文件句柄是否释放Windows中的关联内存?
EN

Stack Overflow用户
提问于 2015-03-31 12:56:08
回答 2查看 917关注 0票数 0

我正在分析一个产品在Windows平台上的性能。会使用CloseHandle()函数关闭该文件的句柄,将内容刷新到磁盘并从内存中删除它吗?:Windows 2008 R2作为VM

编辑:我正在分析一个数据库产品。我们看到RAM的使用量突然减少。我查看了CloseHandle的MSDN,并看到了一行,其中写着“在关闭对象的最后一个句柄之后,对象被从系统中移除。”--这里的system这个词不清楚。在关闭最后一个句柄之前,我们已经使用FlushFileBuffers()来持久化数据。由于数据库文件可能很大,FlushFileBuffers()可以导致大量的磁盘I/O。使用Windows作为VM会降低磁盘I/O的性能吗?

EN

回答 2

Stack Overflow用户

发布于 2015-03-31 13:27:08

关闭句柄不会(可靠)刷新未写入的数据,也不会(通常)清除缓存的数据。这样做意味着将有效地实现零缓存和延迟回写的好处。

我观察到Windows急切地刷新和隐藏文件,但这是一个例外,而不是规则。

票数 1
EN

Stack Overflow用户

发布于 2015-04-08 04:42:00

避免调用FlushFileBuffers(),因为这会降低系统的性能,并且不能保证您的写操作的持久性。

CloseHandle()适用于所有类型的句柄,而不仅仅是文件句柄。例如,CreateEvent()返回句柄。文档将这些类型的“对象”称为“从系统中删除”。除非文件被标记为“关闭时删除”,否则文件在关闭后仍将保留在文件系统中(显然)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29369199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档