2

TLDR の要約: (a) 実行時に複数のオブジェクトを生成する可能性のある (長い) メソッド コードをクラスに含める必要があるか、(b) そうするとメモリ使用量が膨張するか、(c) そうする場合、コードをクラスに「外部委託」する必要があるかそれは一度だけロードされ、クラスメソッドがそれを呼び出すようにしますか、または (d) コードはとにかくオブジェクト定義で一度だけロードされ、私は何も心配していませんか?

.........

これに対する良い答えがあるかどうかはわかりませんが、ある場合は、いつもの場所で検索してもまだ見つかりません。

私のVB.Net(重要であれば2010)WinFormsプロジェクトでは、オブジェクトモデルに約1ダースほどのクラスオブジェクトがあります。これらのいくつかは非常に単純で、データ ストレージ リポジトリとして機能するだけです。ただし、オブジェクト モデルの上位にあるモデルでは、メソッドの数が増えています。かなりの数の高レベルのオブジェクトが使用されている可能性がありますが、正確な数はランタイムに依存するため、それ以上正確には言えません。

最上位レベルのものの 1 つのメソッド コードを書いているときに、コードがかなり長くなり始めていることに気付きました。

最近の平均的な PC のメモリ量を考えると、メモリの最適化は失われた芸術のようなものですが、アプリケーションをリソースを独占したくはありません。だから、私よりも.Netをよく知っている人への私の質問は次のとおりです(たくさんあるでしょう):

  • コードは、作成されたクラスの各インスタンスと共にメモリにロードされますか?

  • または、クラスの定義で一度だけロードされ、すべての派生オブジェクトはその定義を参照するだけですか? (たとえば、イベント ハンドラーを動的に割り当てることができますが、害はありません。)

  • 最初の答えが「はい」の場合、一度だけロードされ、実際のクラスのメソッドから呼び出される「ユーティリティ」オブジェクトにコードを記述する方が効率的でしょうか?

どんな考えでも大歓迎です。

4

2 に答える 2

2

簡単に言えば、それは問題ではありません。データはメモリに保存されますが、コードは 1 回だけ読み込まれます。

編集:もっと長い答えが必要だと思います。

クラスのインスタンスが 10 個ある場合、そのインスタンスの一部である変数はすべて、独自のメモリ スペースを占有します。したがって、10 個のプロパティ、変数などがある場合、メモリ内に 100 個の (ish) アイテムがあることを意味します。コードに関しては、アセンブリで一度だけ読み込まれました。クラスのインスタンスを 10 個作成すると、コードはメモリに 10 回ありません。

于 2013-10-22T21:45:21.753 に答える