在设计任何桌面应用程序时,是否有关于应用程序应使用多少内存的一般规则?

对于重量级应用程序,这些应用程序可以轻松理解或至少进行分析,例如 Firefox 或 Google Chrome。但对于较小的实用程序或业务线应用程序,可接受的内存使用量是多少?

我问这个问题是因为我最近遇到了内存使用和性能之间的权衡,想知道对此是否有任何普遍共识?

编辑: 平台是Windows XP,适合机器只能运行丰富的互联网应用程序的用户。

我的具体权衡问题是在内存中缓存大量图像。如果可能的话,我希望在用户内存允许的情况下拥有尽可能多的应用程序缓存。我这样做是为了让应用程序缓存达到一定的最大限制 考虑到目前的内存压力。.

但什么数字才算好呢?你怎么想出一个?这就是我要问的重点。

有帮助吗?

解决方案

对此没有绝对的答案。这取决于太多的变量。

以下是一些需要考虑的权衡:

  • 您正在为什么设备/平台开发?
  • 您是否希望您的用户使用此软件作为其计算机的主要用途(例如,也许您正在开发某种服务器软件)
  • 谁是您的目标受众,家庭用户?高级用户?
  • 您是否对用户拥有的 RAM 量做出了切合实际的预期?
  • 您是否考虑到用户还将在该计算机上使用许多其他软件?

有时,鱼与熊掌兼得是可能的。例如,如果您正在读取一个文件并将其写回,则可以逐块读取它,而不是将整个文件读入内存然后将其写出。在这种情况下,您可以更好地使用内存,并且速度不会降低。

如果必须的话,我通常建议使用更多的 RAM 以获得更好的速度。但前提是 RAM 要求对于您的目标受众来说是现实的。例如,如果您希望拥有 1GB RAM 的家庭用户使用您的程序,那么您自己就不要使用 600MB RAM。

请考虑在此实例中使用更多 RAM 以获得更好的速度,并优化代码的其他部分以使用更少的 RAM。

编辑:

关于你缓存图片的具体情况。我认为最好允许用户设置他们想要执行的缓存量作为一个选项。这样,拥有大量内存的人可以将其设置得更高以获得更好的性能,而拥有少量内存的人可以将其设置得较低。

其他提示

这完全取决于您的目标平台,这或多或少是一个业务决策。您需要的内存越多,能够使用您的软件的客户就越少。一些问题要问:您的客户(或潜在客户)的计算机中安装了多少内存?它们还会与您的应用程序同时运行哪些其他应用程序?您的应用程序是否被假定为专门运行(例如全屏计算机游戏),或者是一个应该主要在后台运行的实用程序,或者经常从其他应用程序切换到它?

Hear 是一项调查的一个例子,该调查显示了通过 Steam 玩游戏的人的系统中已安装 RAM 的分布情况(来源: 阀门 - 调查汇总数据):

  • 小于 96 Mb 0.01 %
  • 96 Mb 至 127 Mb 0.01 %
  • 128 Mb 至 255 Mb 0.21 %
  • 256 Mb 至 511 Mb 5.33 %
  • 512 Mb 至 999 Mb 19.81 %
  • 1 GB 至 1.49 GB 30.16 %
  • 1.5 GB 至 1.99 GB 6.10 %
  • 2.0GB 38.37%

我从我的领域(电脑游戏)中的此类调查中得出的结论是,我可以合理地预期几乎所有用户都拥有 512 MB 或更多,并且绝大多数用户拥有 1 GB 或更多。对于一款应该独占运行的电脑游戏来说,这意味着 400 MB 左右的工作集相当安全,几乎不会限制任何人退出,如果它为产品提供了显着的附加值,那么拥有一个工作集可能是有意义的大约 800 MB。

这取决于您的目标PC硬件。如果您的应用程序使用太多内存,那么在Windows页面中它会很慢。测试!在妥协中尝试两种选择,如果有意义的话,可以尝试两种选择。在用户将使用的典型计算机上运行测试,并打开大量其他应用程序。因此对于大多数人来说,这可能是Outlook,也可能是Internet Explorer的实例或2(或您选择的邮件客户端/浏览器)。我在一个组织中工作,我的应用程序的使用也可能正在运行一些其他自定义应用程序,所以我们测试那些正在运行的应用程序。我们发现我们的应用程序使用了太多内存,并且使切换应用程序变得非常缓慢,因此我们稍微减慢了应用程序的速度以减少其内存使用量。 如果您感兴趣我们的目标硬件最初是512Mb机器,因为这是我们的通用标准规格工作站。由于此应用程序,几台PC必须升级到1Gb。我们现在已经略微调整了它的RAM使用率,但它是用VB .NET编写的,并且大多数使用的内存似乎都是框架。 PerfMon说这个过程使用的是200Mb(峰值)但是托管堆只有大约2Mb!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top