2013-04-26 54 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