2011-03-14 23 views
1

こんにちは
私はjavaでclass Sampleを持っています。 インスタンス変数を2つ持ち、インスタンス変数を追加して合計を出力する方法が1つあります。
私は2つのオブジェクトオブジェクトを作成しました。どちらのオブジェクトも独自のデータメンバーを持つことは明らかです。 私は、両方のオブジェクトが両方の用途に使用されるメソッドの共通のコピーを1つ持つか、またはjvmで異なるコピーを持つことを知っておく必要があります。メソッドはeactオブジェクトに対して異なるコピーを持っていますか?

+1

これは素晴らしい質問ですが、なぜこれを知る必要がありますか? – MAK

答えて

2

一般的に言えば、JVMは命令をメモリレイアウト内のデータから分離して保持し、メソッドの「コード」はオブジェクトによって参照されます。つまり、同じメソッドを呼び出す2つのインスタンスは、通常、両方ともメモリレイアウト内の同じ「コード」ブロックを参照します。

+0

2つ以上のオブジェクトが同じコードブロックを同時に使用する場合。 1つのオブジェクトが最初に作業を終了し、次に2番目のオブジェクトが使用される、または両方のオブジェクトが同じコードブロックで同時に動作することを意味しますか? – sjain

+1

Java VMは自己修正コードをサポートしていないため、コードは1つのスレッドのみによってのみ使用される理由はないため、コードは不変です。 (これはホットスポットオプティマイザによって変更できますが、これについては心配する必要はありません)。 –

1

クラスはJVMによって一度ロードされます。そのため、メモリにはメソッドの共通コピーが1つあります。

関連する問題