在设计任何桌面应用程序时,是否有关于应用程序应使用多少内存的一般规则?
对于重量级应用程序,可以轻松理解或至少分析这些应用程序,例如Firefox或Google Chrome。但对于较小的实用程序或业务线应用程序,可接受的内存使用量是多少?
我问,因为我最近在内存使用和性能之间进行了权衡,并想知道是否有任何关于它的普遍共识?
编辑:对于拥有能够运行富互联网应用程序的计算机的用户,平台是Windows XP。
我的具体权衡问题是在内存中缓存大量图像。如果可能的话,我希望我的应用程序缓存尽可能多,就像用户的内存允许一样。我已经这样做了,以便应用程序在考虑内存压力的情况下缓存到某个最大限制。。
但是什么是好数字呢?你怎么想出一个?这就是我要问的问题。
答案 0 :(得分:2)
对此没有绝对的答案。这取决于太多变量。
以下是需要考虑的一些权衡因素:
有时可以吃蛋糕也可以吃。例如,如果您正在读取文件并将其写回,您可以通过块读取它,而不是将整个文件读入内存然后将其写出来。在这种情况下,您可以更好地使用内存,并且不会降低速度。
如果必须的话,我通常建议使用更多的RAM来获得更好的速度。但只有当RAM要求对您的目标受众来说是切合实际的时候。例如,如果您希望拥有1GB RAM的家庭用户使用您的程序,那么请不要自己使用600MB RAM。
考虑在此实例中使用更多RAM以获得更好的速度,并优化代码的其他部分以使用更少的RAM。
修改强>
关于缓存图片的具体情况。我认为最好允许用户设置他们希望作为选项执行的缓存量。这样,拥有大量RAM的人可以将其提高以获得更好的性能,而RAM较少的人可以将其设置得较低。
答案 1 :(得分:1)
这完全取决于您的目标平台,这或多或少是一个商业决策。您需要的内存越多,客户就越少能够使用您的软件。有些问题:您的客户(或潜在客户)在他们的计算机中安装了多少内存?与您的应用程序同时运行的其他应用程序是什么?您的应用程序是假设是专门运行的(如全屏计算机游戏),还是应该主要在后台运行的应用程序,或者经常从其他应用程序切换到它?
听到一个调查示例,显示在通过Steam玩游戏的人的系统中安装的RAM的分布(来源:Valve - Survey Summary Data):
我将从我的域(计算机游戏)中的这样的调查中得出结论,我可以合理地预期几乎所有用户都拥有512 MB或更多,而绝大多数用户拥有1 GB或更多。对于应该独占运行的计算机游戏,这意味着大约400 MB的工作集是相当安全的并且几乎不会限制任何人,并且如果它为产品提供了显着的附加值,那么它可能具有工作集的意义。大约800 MB。
答案 2 :(得分:0)
这取决于您的目标PC硬件。如果您的应用程序使用太多内存,那么在Windows页面中它会很慢。测试!在妥协中尝试两种选择,如果有意义的话,可以尝试两种选择。在用户将使用的典型计算机上运行测试,并打开大量其他应用程序。因此对于大多数人来说,这可能是Outlook,也可能是Internet Explorer的实例或2(或您选择的邮件客户端/浏览器)。我在一个组织中工作,我的应用程序的使用也可能正在运行一些其他自定义应用程序,所以我们测试那些正在运行的应用程序。我们发现我们的应用程序使用了太多内存,并且使切换应用程序变得非常缓慢,因此我们稍微减慢了应用程序的速度以减少其内存使用量。 如果您感兴趣我们的目标硬件最初是512Mb机器,因为这是我们的通用标准规格工作站。由于此应用程序,几台PC必须升级到1Gb。我们现在已经略微调整了它的RAM使用率,但它是用VB .NET编写的,并且大多数使用的内存似乎都是框架。 PerfMon说这个过程使用的是200Mb(峰值)但是托管堆只有大约2Mb!