1. ホーム
  2. java

Java - NULL変数がメモリにスペースを必要とするか

2023-11-29 03:03:25

質問

次のコードのブロックを考えてみましょう。

class CheckStore {
    private String displayText;
    private boolean state;
    private String meaningfulText;
    private URL url;

    public CheckStore(String text, boolean state) {
        this.displayText = text;
        this.state = state;
    }
    :
    :
}

二つの変数を初期化すると displayTextstate ) をコンストラクタで使用する場合、他の二つの変数 ( meaningfulTexturl ) を格納するために、メモリにスペースが必要です。 null の値を格納するためのスペースが必要ですか?

Q1. もし、容量が必要な場合は、どの程度のメモリで null の値は、どの程度のメモリを消費するのでしょうか? (例 int は4バイトを消費します)。

Q2. 文字列はメモリ上にどれくらいの容量を消費しますか?文字列はどのくらいのメモリ容量を消費するのでしょうか。文字列の長さに依存するのでしょうか。

どのように解決するのですか?

Javaでは null は参照(基本的には制限されたポインタです)が持つことができる値に過ぎません。 これは、参照が何も参照していないことを意味します。 この場合、参照のためのスペースはまだ消費されます。 これは、32ビットシステムでは4バイト、64ビットシステムでは8バイトです。 しかし、参照を指すクラスのインスタンスを実際に割り当てるまでは、参照が指すクラスのためのスペースは消費されません。

編集: 文字列に関しては String は各文字に対して16ビット(2バイト)、さらに少量の帳簿管理オーバーヘッドを必要とします。