2

我不太关心内存管理,嵌套类是否不好,为主类创建实例时是否需要更多内存,例如:

情况1:

class A 
{ 
   class B 
   {

   }

   int main() 
   {
       B b=new B();
   }
}

A a=new A()在其他文件中,还将包含 B 类结构和 B 的实例

案例二:

class A 
{
   int main()
   {
       B b=new B();
   }
}

class B 
{
   //something
}

在这种情况下,在其他文件中会有 A 的实例,在 A 中会有 B 的实例

那么,案例 1需要更多的记忆还是我的想法是错误的?如果我错了,请任何人解释我这是如何工作的。

4

1 回答 1

7

“我们应该忘记小的效率,比如大约 97% 的时间:过早的优化是万恶之源” - Donald Knuth

首先:不,嵌套类并不是普遍“坏”的。与编程中的几乎所有其他事情一样 - 他们有时间和地点。

第二:是的-正如您所提到的,非静态内部类维护对其外部类的隐式引用,因此如果内部类的实例被强引用,那么外部实例也被强引用。这意味着更多的内存使用。但:

第三(也是最重要的):关键词是“轻微”。这种考虑相当于 Knuth 所说的“小效率”之一。不要让次要的性能问题驱动程序的体系结构。专注于编写清晰、可读的程序,架构干净、组织良好:在许多情况下,使用嵌套类可以创建更清晰的组织——如果你的情况是其中一种,那么使用嵌套类:更清晰的架构和内存使用量的如此微小的增加是您每次都想要的。如果性能成为一个问题,那么只要您的通用架构是可靠的,您就可以进行优化。所以专注于那个架构。

(另外,这样编程更有趣:))

于 2013-04-26T00:26:39.100 回答