我正在分析Windows平台上的产品性能。是否使用CloseHandle()函数关闭该文件上的句柄将内容刷新到磁盘并将其从RAM中删除? Windows平台:Windows Server 2008 R2作为VM
编辑:我正在分析数据库产品。我们看到RAM使用率突然下降。我浏览了CloseHandle的MSDN并看到一行显示“关闭对象的最后一个句柄后,该对象将从系统中删除。”单词系统现在还不清楚。我们已经使用FlushFileBuffers()在关闭最后一个句柄之前保留数据。 由于数据库文件可能很大,FlushFileBuffers()可能会导致大量磁盘I / O.可以使用Windows Server作为VM降低磁盘I / O的性能吗?
答案 0 :(得分:1)
关闭句柄不会(可靠地)刷新未写入的数据,并且(通常)不会清除缓存的数据。这样做意味着有效的零缓存和懒惰的回写优势。
我发现Windows急切地刷新和删除文件,但这比规则更为例外。
答案 1 :(得分:0)
避免调用FlushFileBuffers(),因为这会降低系统的性能,并且不能保证写入的持久性。
CloseHandle()适用于所有类型的句柄,而不仅仅是文件句柄。例如,CreateEvent()返回一个句柄。文档将这些类型的“对象”称为“从系统中删除”。文件,除非它们在关闭时被标记为删除,它们将在关闭后显然保留在文件系统中(显然)。