我很少担心内存管理,嵌套类是坏的,在为主类创建实例时是否需要更多内存,例如:
案例1:
class A
{
class B
{
}
int main()
{
B b=new B();
}
}
其他文件中的 A a=new A()
也包含B类结构和B
案例2:
class A
{
int main()
{
B b=new B();
}
}
class B
{
//something
}
在这种情况下,在其他文件中将有A的实例,并且在B的实例中
那么, 案例1 会占用更多内存还是我的想法错了?如果我错了,请任何人解释我这是如何运作的。
答案 0 :(得分:5)
“我们应该忘记小的效率,大约97%的时间说:过早的优化是所有邪恶的根源” - Donald Knuth
第一:不,嵌套类并非普遍“糟糕”。就像编程中几乎所有其他东西一样 - 它们有时间和地点。
第二:是 - 正如您所提到的,非静态内部类维护对其外部类的隐式引用,因此如果强引用内部类的实例,则外部实例也被强引用。这意味着更多的内存使用量。但是:
第三(也是最重要的):关键词是“轻微”。这种考虑相当于Knuth所说的“小有效性”之一。 不要让轻微的性能问题驱动程序的体系结构。专注于编写清晰,可读的程序,使用干净,组织良好的体系结构:在许多情况下,使用嵌套类可以创建更清晰的组织 - 如果你的是其中一种情况,那么使用嵌套类:在更清晰的架构和内存使用量的这种微小增加之间的权衡是你每次都想要的。如果性能成为问题,那么只要您的通用架构是可靠的,您就可以进行优化。所以专注于该架构。
(另外,编程更有趣:))