软件将使用内存,没有什么大惊喜,但与程序的大小相比,如何将这种使用保持在最低限度.
我认为最好的例子就是Firefox.有些用户已经体验过,有些用户没有,但可以肯定地说,所有以前版本的Firefox使用的内存比当前版本多得多.然而,功能扩展和选项被添加.我希望内存使用率可以作为额外的选项而增加.
换句话说,必须有一些方法可以确保您的程序不会耗尽计算机的内存.
所以,我把这变成了一个"最佳实践"的问题,向你们所有人询问你的小技巧和调整是什么让你的程序做它做的事情,用你通常认为的CPU少.而且,最肯定的是避免什么.
这里有一个小问题:我在一本关于C#的书中遇到了一些问题.显然,在编写枚举时,可以设置此枚举的索引大小.对于大的Enum,你应该让编译器处理它我猜,但对于只有2或3项的枚举,你可以这样做:
public enum HTMLTYPE : sbyte { HTML401,XHTML10,XHTML11 }
对于那些不知道原因的人来说,显然为任何枚举的索引保留的内存量会自动设置为C#中的整数.换句话说,将保留该数量的内存.但是当你在Enum中定义这么少的东西时,整数就是浪费空间.该书声称这可以减少程序使用的内存量.我想知道这是否属实.
编辑:确实,它应该是记忆,让我觉得好.更改了所有条目.
首先,你可能会混淆CPU和RAM(也就是内存).CPU是处理器,即根据数据运行代码的处理器.内存是存储代码和数据的地方.
实际上应该避免这种枚举技巧.首先,sbyte
不符合CLS.然后它可以限制未来的扩张.总有一个事实是CPU总是使用整个字(int
在32位架构和long
64位架构中).你失去了所有这些,并获得了什么收益?你的内存占用几个字节.
更重要的是,遵循这些明智的话:过早的优化是万恶之源.
这意味着,只有在真正需要时才进行优化.先测量一下.你很可能意识到这不是那个需要减少的枚举中的三个字节.
一种技术是使用延迟初始化仅在需要时创建对象.
此外,请务必将不再需要的对象置于(或设置为null),以便对它们进行垃圾回收.