Rob*_*obb 2 c++ memory graphics memory-leaks openscenegraph
我们有一个相当图形密集的应用程序,它使用FOX工具包和OpenSceneGraph,当然还有C++.我注意到在运行应用程序一段时间后,似乎存在内存泄漏.但是,当我最小化时,似乎释放了大量内存(如Windows任务管理器中所见).当应用程序恢复时,内存使用率会攀升,但会达到低于最小化之前的数量.
这是一个巨大的指标,我们有一个令人讨厌的内存泄漏?或者这可能与Windows如何处理图形应用程序有关?我不确定发生了什么事.
你所看到的只是内存缓存.当你调用free()/ delete()/ delete时,大多数实现都不会将这个内存实际返回给操作系统.他们将在您下次请求时以更快的速度返回它.当您的应用程序最小化时,它们将释放此内存,因为您不会很快请求它.
你不太可能有实际的内存泄漏.任务管理器不是特别准确,并且有很多行为可以改变你正在使用的明显内存量 - 即使你正确地发布它.如果您仍然担心,您需要获得一个实际的内存分析器来查看.
此外,是的,Windows在最小化应用程序时做了很多事情.例如,如果您使用Direct3D,则会丢失设备.有线程时间的东西.Windows旨在为用户提供一次一个应用程序的最佳体验,并且可以从应用程序中获取额外的缓存/缓冲资源.