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

编辑:我正在分析数据库产品。 而且我们看到RAM使用率突然下降。 我通过MSDN的去CloseHandle的和看到这样一行说:“ 过去的对象句柄被关闭后,对象从系统中删除。”这里所说的系统是不明确的。 在关闭最后一个句柄之前,我们已经在使用FlushFileBuffers()持久化数据。 由于数据库文件可能很大,因此FlushFileBuffers()可能会导致大量磁盘I / O。 将Windows Server用作VM会降低磁盘I / O的性能吗?

#1楼 票数:1

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

我已经观察到Windows急切地刷新和取消缓存文件,但这不是规则的例外。

#2楼 票数:0

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

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

  ask by Ajay Gupta translate from so

未解决问题?本站智能推荐:

2回复

查找是否已从使用os映像复制的软件中安装了映像的OS

我们能否确定我们的软件是否已复制到OS映像(Windows)中,然后部署到另一台计算机上。 硬件详细信息确实会更改,但是可能是由于硬件升级或更改而引起的。 在软件级别上是否有任何内容指示已安装OS映像。 PS映像部署后,操作系统的安装日期不会更改。它显示的是原始操作系统的安装日期和时间
4回复

如何永久删除文件使其无法恢复?

如果我希望我的应用程序(用 .NET 编写)删除一个文件,使其无法被磁盘恢复工具恢复。 我有哪些选择? 我能想到的一个是我以写入模式打开它,用一些随机数据覆盖所有它,这会使文件无法恢复。 有没有其他办法?
1回复

Python:os.path.isfile未检测到文件

我有一个脚本,通过检查每个所需文件是否存在以及是否不下载它们来更新文件层次结构。 因为使用完整路径会导致我认为文件名过长且经常包含特殊字符的问题,所以我将其更改为os.chdir到每个子目录中,请检查所需文件并下载它们。 但是我的程序始终在一个文件上崩溃,因为os.path.isfile
1回复

在Windows上打开文件的内存开销是多少?

TL; DR 在现代Windows系统上打开文件需要占用多少内存? 某些应用程序负载将需要打开“大量”文件。 Windows非常有能力打开“很多”文件,但是保持单个文件打开的负担是什么,以便人们可以确定“很多”何时“太多”? 背景 为了在32位进程中顺序处理大型数据集(100s
2回复

聚合由Windows进程进行的内存访问集合的更简单方法?

我将此作为个人项目进行,我想为这些数据制作一个可视化工具。 但第一步是获取数据。 我目前的计划是 让我的程序通过它调试目标进程 每个步骤从目标进程中的每个线程的上下文中记录 EIP 从上下文构造指令使用的内存地址并存储它。 有没有更简单或内置的方法来做到这一点?
1回复

Windows中的特权提升

我正在编写一个应用程序,该应用程序将包含以用户权限运行的GUI部分和以本地系统权限作为服务运行的服务器部分。 GUI部件有时需要执行一些需要高特权的操作(管理员/本地系统)。 GUI应用程序可以请求服务执行此操作,而服务可以执行此操作(当然在身份验证和授权之后)。 但是,如果该服务可以运
2回复

如何关闭已转换为FILE*的句柄?

我正在尝试重定向子进程的输出,并将FILE*返回给父进程。 我本质上是遵循使用重定向的输入和输出创建子进程中的代码示例。 唯一的修改是我将整个内容封装在一个函数中并执行 问题是我要清理,而fclose抛出错误。 在执行_fdopen之后是否应该关闭句柄? 我应该怎么在这里打扫卫生
1回复

微软是否有可能在未来的版本中逐步淘汰Win32API?

我喜欢使用Win32,即使在.Net,MFC和touch时代。 我的同事告诉我,在未来的Windows版本(Windows 9之后)中可能无法使用Win32 API,因为微软可能会弃用它。 但是,这对我来说似乎是不可能的,因为Windows本身使用了这么多的API。 如果他们摆脱了低级别