我们创建了一个应用程序,在鼠标点击或屏幕触摸上消耗了太多的物理内存。该应用程序的代码有数千行,是用C ++开发的。
到目前为止我们的方法是释放内存是为了最小化应用程序。但这种方法会产生影响。所以我们正在寻找解决问题的替代方法。此应用程序在全屏模式下运行。答案 0 :(得分:4)
你处于困境 - 在发展的后期发现这种问题是不幸的。很可能需要进行基本的重新设计。
我推断一些特定的代码路径,响应用户事件,对内存非常渴望。您需要准确了解正在发生的事情以及如何最好地改进事物。没有更多细节,我们无法帮助解决这个问题。但是我过去看过的一个例子是:你是从一些数据库中获取大量数据并将其全部保存在内存中吗?你真的需要所有的数据吗?你可以将更多的查询卸载到数据库吗?
你还需要看一下“太多”的记忆意味着什么。你的目标是机器太小吗?也许只是在更多的内存上花费几十英镑比花费许多开发人员在一个品脱罐中挤一夸脱更便宜?
回应评论时编辑:
好的,这听起来像是泄漏。你应该能够识别你分配内存的地方,可能应该有某种对称性,其中有成对的自由。我首先要确定分配,有些东西是2MB,应该可以找到它。然后了解何时应该释放该内存,例如,一旦显示屏幕,或者用户会话结束。然后找出它为什么没有发生。您可能需要查看内存管理的整体策略。智能指针?某种管家有管家线程?总体而言,您需要一个清晰的设计理念来获取和发布资源。这很难改进现有的应用程序,所以你有同情心。