为什么我的应用程序在 Windows 10 上使用更多内存?
Why does my application use more memory on Windows 10?
我有一个使用 Visual Studio 2010 编译的 C++ 应用程序。这是一个大型遗留应用程序,具有多个线程服务套接字、数据库连接、RV 市场数据流等。
在 Windows 7 上,应用程序 运行 正常,正常使用时消耗大约 700MB 的内存,一旦启动和 运行ning 时波动很小。
完全相同的二进制文件复制到我的 Windows 10 机器 运行 启动后大约 15 秒内内存不足。
我使用 SysInternals procexp64.exe 来监控内存使用情况。在 Win7 机器上,我看到虚拟内存使用量徘徊在 700MB 左右。在 Win10 机器上,虚拟内存使用量稳步攀升,直到它在启动后的几秒钟内达到 2GB 标记,然后抛出内存不足异常。我在链接器设置中设置了 LargeAddressAware 标志,然后它的行为方式相同,当它达到 4GB 时抛出内存不足异常。
可以解释此问题的 Win7 和 Win10 平台之间的内存分配有何不同?
我设法找到了此应用程序 运行 在我的 Windows 10 工作站上内存不足的原因。
是的,该应用程序是未定义行为、未初始化变量和所有其他无法形容的事情的温床。但它已有 20 年历史,包含 500 kloc 的数千个文件,因此无法修复所有这些文件。
它在我的 Windows 7 机器上运行良好。它确实有一个内存不足的处理程序集。我在那里放了一个断点。当它停止时,我查看加载的模块并将它们与我的 Windows 7 机器上的模块进行比较。
一个明显的不同是……verifier.dll。事实证明,我得到的这个 Windows 10 工作站不是新的,并且通过 gflags 启用了页面堆分析。这使用的额外内存导致了问题。使用 gflags.exe 关闭页面堆分析使我的内存不足问题消失了。
对我来说是 Office 365 和 OfficeClickToRun.exe。在 Office 任务计划程序中也指定了一些任务。
我已经卸载了 Office 365 并安装了 Office 2019 Pro。
奖励:在 Outlook 中搜索终于可以工作了:)
我有一个使用 Visual Studio 2010 编译的 C++ 应用程序。这是一个大型遗留应用程序,具有多个线程服务套接字、数据库连接、RV 市场数据流等。
在 Windows 7 上,应用程序 运行 正常,正常使用时消耗大约 700MB 的内存,一旦启动和 运行ning 时波动很小。
完全相同的二进制文件复制到我的 Windows 10 机器 运行 启动后大约 15 秒内内存不足。
我使用 SysInternals procexp64.exe 来监控内存使用情况。在 Win7 机器上,我看到虚拟内存使用量徘徊在 700MB 左右。在 Win10 机器上,虚拟内存使用量稳步攀升,直到它在启动后的几秒钟内达到 2GB 标记,然后抛出内存不足异常。我在链接器设置中设置了 LargeAddressAware 标志,然后它的行为方式相同,当它达到 4GB 时抛出内存不足异常。
可以解释此问题的 Win7 和 Win10 平台之间的内存分配有何不同?
我设法找到了此应用程序 运行 在我的 Windows 10 工作站上内存不足的原因。
是的,该应用程序是未定义行为、未初始化变量和所有其他无法形容的事情的温床。但它已有 20 年历史,包含 500 kloc 的数千个文件,因此无法修复所有这些文件。
它在我的 Windows 7 机器上运行良好。它确实有一个内存不足的处理程序集。我在那里放了一个断点。当它停止时,我查看加载的模块并将它们与我的 Windows 7 机器上的模块进行比较。
一个明显的不同是……verifier.dll。事实证明,我得到的这个 Windows 10 工作站不是新的,并且通过 gflags 启用了页面堆分析。这使用的额外内存导致了问题。使用 gflags.exe 关闭页面堆分析使我的内存不足问题消失了。
对我来说是 Office 365 和 OfficeClickToRun.exe。在 Office 任务计划程序中也指定了一些任务。
我已经卸载了 Office 365 并安装了 Office 2019 Pro。 奖励:在 Outlook 中搜索终于可以工作了:)