【发布时间】:2009-03-01 02:33:51
【问题描述】:
软件会使用内存,这没什么大不了的,但是与您的程序有多大相比,您如何将这种使用量保持在最低限度。
我认为最好的例子是 Firefox。有些用户体验过,有些用户没有体验过,但可以肯定地说,所有以前版本的 Firefox 使用的内存都比当前版本多得多。然而,功能扩展并添加了选项。 我希望内存使用量会随着额外选项的增加而增加,并且会添加此类内容。
也就是说,必须有一些方法来确保您的程序不会耗尽计算机的内存。
所以,我把这个问题变成了一个“最佳实践”问题,询问你们所有人的小技巧和调整是什么,以使您的程序能够以比您通常认为的更少的 CPU 来完成它的工作。还有,最肯定要避免的事情。
这里有个小问题:我在一本关于 C# 的书中偶然发现了一些东西。 显然,在编码 Enum 时,可以设置该 Enum 的索引大小。 对于大型 Enum,我猜你应该让编译器处理它,但是对于只包含 2 或 3 个项目的 Enum,你可以这样做:
public enum HTMLTYPE : sbyte
{
HTML401,XHTML10,XHTML11
}
对于那些不知道为什么的人,显然为任何 Enum 的索引保留的内存量在 C# 中自动设置为整数。因此,换句话说,将保留该内存量。但是在你的枚举中定义这么少的东西时,整数是浪费空间。 这本书声称这可以减少程序使用的内存量。我想知道这是不是真的。
编辑:确实,它应该是记忆,该死的我。更改了所有条目。
【问题讨论】:
-
您是否混淆了 CPU 和 RAM(又名内存)?
-
因此,修复内存泄漏往往会有所帮助。 :)
-
@Bobby:你不能在 C# 中“泄漏”内存。至少在传统意义上,只要你不感到不安全。不过,您可以泄露其他资源。
-
当然可以在 C#(和 Java)中泄漏内存。只需将内容添加到集合中,然后忘记删除它们。即时内存泄漏。
-
如果您不再引用该集合,它们将在集合后的某个时间被 GC。如果您引用该集合,则无法 GC 其元素。我没有看到泄漏在哪里......