欢迎来到天天文库
浏览记录
ID:53260288
大小:47.00 KB
页数:13页
时间:2020-04-02
《查找并消除大内存占用.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、查找并消除大的内存占用发布日期:更新日期:摘要:介绍了有关在设备上减小内存占用和提高运行库速度的提示、窍门和技术。欢迎再次阅读这一有关的每月专栏文章(它的名称越来越不恰当)。上一月份的专栏文章没有确定最终期限,主要原因在于我当时是在德国慕尼黑参加欧洲大会。由于飞机晚点、时差以及仓促的旅行日程等因素,在我回来以后,我的生理时钟用了四天时间才恢复正常。然而,我的确不希望错过这次环球旅行—我喜欢到德国访问,并且非常喜爱这一展览会。我所举办或参加的所有会议都吸引了大批客户,他们都是来享受免费食品以及与工作人员进行自由交流的。我遇
2、到了一些老朋友,结交了一些新朋友,并且在此期间将我的相机闪存卡用完了两三次—我现在正在盼望着明年再次到那里访问。好了,关于这次旅行的见闻就谈这么多。我希望能够深入研究巡回展览会自去年在拉斯维加斯启动以来涵盖的一些更多主题。本月,我们将讨论内存占用的减小,同时介绍一些提示、窍门和技术,以使您的运行库尽可能地小(和快速)。让我们开始吧。第一步—迁移到如果您要尝试减小内存占用,则第一步是升级到。因为我们一直在上工作,所以我们总是在竭力避免发生组件膨胀的情况。虽然我们首先关注的问题现在和将来都与功能有关,但我们也致力于使组件大小
3、尽可能保持最小。事实上,我们发现所有组件的内存占用大小平均减小了。与通过原始工具和数据库运行的相同配置比较,带有、和的配置表明在运行库大小方面减小了。我们所提供的数字是公平的—我们对每种方案都使用了标准的硬件配置文件,并对每种方案使用了相同的设置,包括将映像放在压缩的卷上。返回页首第二步—改变观察问题的角度事实上,减小内存占用的最复杂且最难成功的方法之一是我们的客户最经常使用的方法。该方法有几个方面:•向给定的配置中添加一切内容(因为您并不知道您可能需要什么),然后努力删除没有用的内容。•如果您的设备实际上将您的应用程序
4、显示为自定义外壳程序,则在配置中包括一个外壳程序。•从导出自测试计算机的完整开始,包含与它发现的所有设备对应的条目,而无论它是否将存在于最终的设备上。•包括组件化的(或安装在设备上的)应用程序,并包括每个选项以确保安全。我喜欢将最后一个方法称为“雕刻大象”,就像笑话中所说的:“如何雕刻大象的雕像?拿一块大木头,然后切掉所有不像大象的部分。”任何曾经采用这一方法的人都知道,这会直接导致头发过早脱落、的股票价值猛涨(因为您需要治疗溃疡)以及太多未完成的木头大象雕像。尝试在进行完整的依赖性检查之后修剪映像,类似于试图在将鸡蛋搅
5、成糊后从蛋糊中向外挑拣蛋壳。您删除了一个组件,然后又由于依赖性检查需要该组件使得您重新安装它。您试图关闭自动解析,然后开始回答几百个有关您需要哪个组件的问题—并且您在一行中就要这么做五到十次。最终您找到了一个要删除的父组件,但是发现内存占用的减小量赶不上它的增长量,因为造成了孤立组件。要生成小型运行库,最好的方法是从相反方向开始:不是雕刻大象,而是使用粘土塑造大象。返回页首从小到大,逐步完成使您的运行库变得更小的第一个重要窍门是,从您可以在您的设备上正常使用的最小运行库开始。这意味着获得可启动系统所需的最少数量的硬件,以
6、及确保您的设备正常工作的最少量的功能。要获得尽可能小的硬件内存占用,将必须修剪由生成的。我总是建议使用而不是,因为使用生成的时,您几乎总能确保拥有有效的配置。生成的通常不会产生无法完成重要工作的可启动系统。在生成(在、或环境下)之后,就可以打开组件设计器,并将导入到新的硬件组件中。请将硬件组件的原型设置为“”。现在,您可以着手在该硬件组件中删除依赖项。通常,您可以安全地删除下列设备:•音频组件和编码解码器。•视频捕获和显示组件。•打印机。•软盘。返回页首它只有一个按钮,并且我们在它离厂之前按下了这个按钮(含糊的引用,为法
7、律所要求—我必须将其包括于此。)如果您无法在您的设备上运行,则您将有一些工作需要完成。您需要识别将要使用的设备中的所有硬件,并且手动为所有硬件添加驱动程序。尽管这对于网络适配器、视频卡甚至芯片组可能不是太困难,但某些设备却很难跟踪。您可能遇到的最糟糕的情形是,当您试图启动您认为完整的运行库时,得到的却是蓝屏。那么,现在该怎么办呢?您可以将我们的预定义基本配置之一作为起点,这些基本配置列在“”下面的组件浏览器中。这些示例宏可以启动所有能够启动的可用硬件中的,并且是很好的设备开发通用起点。使用这些宏的方法是:将它们添加到配置
8、中,根据需要调整设置,然后生成和启动。您应该发现,映像在多数设备上都能够启动,并且您将拥有某种可以作为起点的东西。最可贵的是,运行库以很小的规模启动。返回页首情况您将注意到的一件事情是,有两个类似的示例宏组件—一个名为,另一个名为。二者之间的根本区别是(一个具有,另一个具有),但也是深刻的。当我们开始开发时,我们注意
此文档下载收益归作者所有