2017-06-05 11 views
-1

私は、バイナリのディスク上とインスタンス化されたオブジェクトごとに、Javaインターフェイスがどのくらいのスペースを占めるかを理解しようとしています。義務的な「すべてのJVMの実装は異なるかもしれません」免責事項、私は100%の正確な回答ではなく、これがどのように処理されるかの本質を理解することにもっと関心があります。Javaインターフェイスにはどのくらいのスペース(バイナリ/メモリ)が必要ですか?

単純なインターフェース(静的な最終変数なし、デフォルトの実装なし)を仮定すると、これはバイナリでどのくらいのスペースを取るのですか?私は、人間が読めるクラス名は、デバッグ/リフレクションのために格納する必要があり、おそらくいくつかの一意のクラス識別子を格納する必要があると仮定します。このインタフェースを実装するオブジェクトがインスタンス化されると、インタフェースがオブジェクトのメモリ内表現に何バイト追加するか

+3

これは非常に意味のある質問ではなく、クラスファイル形式が変更され、JVMの実装が変更されるため、回答は時間の経過と共に変化します。おそらく、さまざまなプラットフォーム上で異なる答えを持っています。もしあなたが "答え"があなたに与えるものと、知ることが重要な理由について説明したのかもしれません。確かに唯一の答えは、 "...オーバーヘッドの余分なバイト数..."は "それは依存している"ことです。 –

+2

それはコップアウトの答えではなく、唯一の有効な答えです*。 SOは、今日の一人の質問に答えることだけに留まらず、長期的な情報の保管場所です。明日の最新のJavaについて正確なことは明日は関係がないかもしれないし、今日Javaの別のバージョンを使っている人には関係がないかもしれない。 – Adrian

+1

JVMバイトコード仕様を読みます。 https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html –

答えて

1

バイナリのディスク上でも、インスタンス化されたオブジェクトベースでも、Javaインターフェイスがどのくらいのスペースを取るか。

バイナリでディスクに


決定的な答え:.classファイルのファイルサイズを参照してください。
短い回答:これは、Jim Garrison saidによって異なります。
長い回答:パッケージ名の長さ、インタフェース名の長さ、メソッドの数、メソッド名の長さ、パラメータの数、パラメータの型、パラメータ名の長さ、戻り型の型、デバッグの有無情報はインスタンス化されたオブジェクトごとに...

を、含まれていないバイトコードのバージョン、...ともっとされています
なし。

関連する問題