Java:可以优化多大的String以减少序列化对象中的内存?

时间:2018-10-03 17:10:38

标签: java string serialization

我有以下课程,希望将其序列化并存储在.ser文件中:

public class Memento implements Serializable {
    private String file_name;
    private String content;
    private Date date_of_change;

    public Memento(String file_name, String content) {
        this.file_name=file_name;
        this.content=content;
        date_of_change = Calendar.getInstance().getTime();
    }

    public String getFile_name() {
        return file_name;
    }

    public String getContent() {
        return content;
    }

    public Date getDate_of_change() {
        return date_of_change;
    }
}

问题是“ content”变量必须包含非常大的字符串。当程序序列化并写入对象时,结果文件的大小大于原始文件的大小(从中获取“内容”的文本)。例如,原始文件大小为2.035字节;一张快照后的.ser文件大小为2.247字节。

如果我想在此处存储多个文本快照,那就不好了。

您有什么建议,可以将多大的String压缩/优化为较小的类型?还是解决方案是在Stream / Writer级别上?

1 个答案:

答案 0 :(得分:2)

请考虑提供您自己的readObject和writeObject方法,以在序列化期间压缩content变量的内容。请参阅ZipInputStream / ZipOutputStream。