2

重複の可能性:
クラスに多くのメソッドがあると、そのクラスのオブジェクトのオーバーヘッドが増加しますか?

クラスがある場合:

public class Example
{
   int someInt1 = 0;
   ..
   int someInt10 = 0;

   string somestring1 = "1111";
   ...
   string somestring10 = "10101010";

   public Method1()
   {
      // do stuff
   }

   public Method2()
   {
      // do stuff
   }

   ...

   public Method10()
   {
     // do stuff
   }
}

そして私は以下を持っています:

Example Ex1 = new Example();
Example Ex2 = new Example();
...
Example Ex10 = new Example10();

各クラスの10個のintと10個の文字列のそれぞれにリソースを割り当てる必要があることは明らかです。Intはスタック上にあり、文字列ポインターはスタック上にあり、ヒープを参照しています(またはそう私は信じています)。

クラスに含まれているメソッドに興味があります。これはコンパイルされているので、メソッドに使用されるリソースのセット(私が推測するメモリ)は1つだけです。これは、クラス'Example'のすべてのインスタンス間で共有されますか、それとも各インスタンスがメソッドコードのメモリを消費しますか?

4

2 に答える 2

0

各サンプル インスタンスのコストは、32 ビット システムで 4 ポインター + 2 int = 24 バイトです。文字列は共有されます (複数回参照されます)。

于 2012-08-24T03:48:08.823 に答える
0

Java では、クラス内の各メソッドのコピーが 1 つだけ保存され、インスタンス化されたすべてのオブジェクトがそのコピーを使用できます

于 2012-08-24T04:29:02.750 に答える