我正在连接一个发送许多不同JSON对象的Web服务。我没有使用Java JSONObject,而是计划使用GSON库转换为POJO。我希望拥有一个可以容纳所有可能性的通用java对象,而不是大量的类(每个可能的JSON服务响应一个):
public class GenericJSONResponse{
public long objectKey;
public GenericJSONResponse subObject1;
public String description;
// ...
}
我认为这是一个很好的方法,因为服务器发送的属性差异很大。所有服务器响应仅包含可能的GenericJSONResponse属性的子集。未填充的属性是否会占用内存,即使它们为空?我的通用对象将有许多未使用的属性,我不希望它们占用宝贵的内存。
答案 0 :(得分:6)
类中的每个字段(引用类型)占用类的每个实例的指针大小(32位或64位)内存块。
此内存用于存储对字段值的引用,该引用可以是对现有对象或空引用的引用。
答案 1 :(得分:1)
如果不初始化引用,则仅使用存储引用所需的内存量。
如果您创建一个新对象并将其分配给引用,则还将使用新对象的内存,并将使用引用所需的内存。
如果只是将现有对象分配给现有引用,则不需要新的内存分配。
答案 2 :(得分:0)
Null只是引用可以具有的值。它在32位系统上为4个字节,在64位系统上为8个字节