代码之家  ›  专栏  ›  技术社区  ›  jovanMeshkov

嵌套类占用更多内存空间?

  •  2
  • jovanMeshkov  · 技术社区  · 11 年前

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

    案例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的实例,在A中会有B的实例

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

    1 回复  |  直到 11 年前
        1
  •  7
  •   drew moore    11 年前

    “我们应该忘记小效率,比如说97%的时间:过早优化是万恶之源”-唐纳德·克努思

    第一:不,嵌套类并不是普遍的“坏”。就像编程中几乎所有其他东西的情况一样——它们有时间和地点。

    第二:是-正如您所暗示的,非静态内部类维护对其外部类的隐式引用,因此,如果内部类的实例被强引用,那么外部实例也被强引用。这意味着内存使用量会稍微增加。但是:

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

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