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
}

この場合、他のファイルには A のインスタンスがあり、A には B のインスタンスがあります。

では、ケース 1はより多くのメモリを必要としますか、それとも私の考えが間違っていますか? 私が間違っている場合は、これがどのように機能するかを誰かに説明してください。

4

1 に答える 1

7

「私たちは小さな効率を忘れるべきです。たとえば、約 97% の確率で: 時期尚早の最適化はすべての悪の根源です」 - Donald Knuth

最初: いいえ、ネストされたクラスは普遍的に「悪い」わけではありません。プログラミングの他のほとんどすべての場合と同様に、それらには時間と場所があります。

2番目:はい-ほのめかしたように、非静的内部クラスは外部クラスへの暗黙的な参照を維持するため、内部クラスのインスタンスが強く参照されている場合、外部インスタンスも強く参照されます. これは、メモリ使用量がわずかに増えることを意味します。しかし:

3 つ目 (そして最も重要なこと): キーワードは「わずか」です。この考慮事項は、クヌースが話している「小さな効率」の 1 つに相当します。パフォーマンスに関する軽微な懸念によって、プログラムのアーキテクチャが動かされないようにしてください。明確でよく整理されたアーキテクチャを備えた、明確で読みやすいプログラムを作成することに重点を置きます。多くの場合、ネストされたクラスを使用すると、より明確な編成を作成できます。あなたのケースがそのようなケースの 1 つである場合は、ネストされたクラスを使用してください。より明確なアーキテクチャとメモリ使用量のこのようなわずかな増加は、毎回実行したいものです。将来的にパフォーマンスが問題になる場合は、一般的なアーキテクチャがしっかりしている限り、最適化できます。したがって、そのアーキテクチャに注目してください。

(さらに、プログラミングはその方がずっと楽しいです:))

于 2013-04-26T00:26:39.100 に答える