6

我正在连接到一个发送许多不同 JSON 对象的 Web 服务。我计划使用 GSON 库转换为 POJO,而不是使用 Java JSONObject。我想要一个可以容纳所有可能性的通用 java 对象,而不是大量的类(每个可能的 JSON 服务响应一个):

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

我认为这是一个很好的方法,因为服务器发送的属性差异很大。所有服务器响应将仅包含可能的 GenericJSONResponse 属性的子集。即使它们为空,未填充的属性是否会占用内存?我的通用对象将有许多未使用的属性,我不希望它们占用宝贵的内存。

4

3 回答 3

7

类中的每个字段(引用类型)占用类的每个实例的指针大小(32 位或 64 位)的内存块。

此内存用于存储对字段值的引用,该引用可能是对现有对象的引用或空引用。

于 2013-08-12T15:28:08.550 回答
1

如果您不初始化引用,则只会使用存储引用所需的内存量。

如果您创建一个新对象并将其分配给引用,则还将使用新对象的内存,并且将使用引用所需的内存。

如果您只是将现有对象分配给现有引用,则不需要新的内存分配。

于 2013-08-12T15:28:48.413 回答
1

Null 只是引用可以具有的值。在 32 位系统上为 4 个字节,在 64 位系统上为 8 个字节

于 2013-08-12T15:31:04.670 回答