2013-04-26 59 views
2

我有点担心内存管理,也有嵌套类是坏的,它需要更多的内存时对主类,例如创建实例:嵌套类需要更多内存空间?

案例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 
} 

在这种情况下,其他的文件会有一个实例,并在B的情况下

所以,案例1需要更多的内存或我的想法是错误的?如果我错了,请任何人解释我是如何工作的。

+0

你在说什么编程语言?请相应地标记问题。 – 2013-04-26 00:20:25

+0

@MattBall Java。对于其他语言是不同的? – jovanMeshkov 2013-04-26 00:25:53

+0

不要让自己过度复杂化。如果有的话,这种差异是微不足道的。 – SJuan76 2013-04-26 00:25:58

回答

5

“我们应该忘记小的效率,讲的时候约97%:过早的优化是所有罪恶的根源” - 高德纳

第一:不,嵌套类不普遍“坏。”与几乎所有其他编程的情况一样 - 他们有时间和地点。第二:是的 - 正如你所指出的,非静态的内部类保持对其外部类的隐式引用,所以如果内部类的实例被强引用,那么外部实例也被强引用。这意味着更多的内存使用量。但是:

第三(也是最重要的):关键词是“轻微”。这个考虑等于Knuth谈到的“小有效”之一。 不要让轻微的性能问题影响程序的体系结构。专注于用清晰,组织良好的架构编写清晰可读的程序:在许多情况下,嵌套类的使用可以创建更清晰的组织结构 - 如果您的是其中一种情况,则使用嵌套类:交换在更清晰的体系结构和内存使用量的这种微小增加之间是每一次你想要采取的。如果性能成为问题的话,那么只要您的通用架构稳固,您就可以优化。所以关注那个架构。

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

+0

谢谢!我刚刚阅读了关于过早优化的文章,我不知道这个东西存在。 – jovanMeshkov 2013-04-26 00:47:41

+0

很高兴我能指点你:) – drewmoore 2013-04-26 00:50:32