6

多くの異なる JSON オブジェクトを送信する Web サービスに接続しています。Java JSONObject を使用するのではなく、GSON ライブラリを使用して POJO に変換する予定です。大量のクラス (可能な JSON サービス応答ごとに 1 つ) ではなく、すべての可能性を保持できる汎用 Java オブジェクトが必要です。

public class GenericJSONResponse{
    public long objectKey;
    public GenericJSONResponse subObject1;
    public String description;
    // ...
}

サーバーによって送信されるプロパティは大きく異なるため、これは良いアプローチだと思います。すべてのサーバー応答には、可能な GenericJSONResponse プロパティのサブセットのみが含まれます。値が設定されていないプロパティは、null であってもメモリを占有しますか? 私の汎用オブジェクトには、使用されていない多くのプロパティがあり、貴重なメモリを占有したくありません。

4

3 に答える 3

7

クラス内の (参照型の) 各フィールドは、クラスのインスタンスごとにポインター サイズ (32 ビットまたは 64 ビット) のメモリ チャンクを占有します。

このメモリは、フィールドの値への参照を格納するために使用されます。これは、既存のオブジェクトへの参照または null 参照である可能性があります。

于 2013-08-12T15:28:08.550 に答える
1

参照を初期化しない場合、参照を格納するために必要なメモリ量のみが使用されます。

新しいオブジェクトを作成して参照に割り当てると、新しいオブジェクトのメモリも使用され、参照に必要なメモリが使用されます。

既存のオブジェクトを既存の参照に割り当てるだけの場合、新しいメモリ割り当ては必要ありません。

于 2013-08-12T15:28:48.413 に答える