Java: Какую большую строку можно оптимизировать, чтобы она занимала меньше памяти в сериализованном объекте? - PullRequest
0 голосов
/ 03 октября 2018

У меня есть следующий класс, который я хочу сериализовать и сохранить в файле .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 байта.

Это не хорошо, если я хочу хранить там несколько снимков текста.

Есть ли у вас какие-либо предложения, насколько велика строка, которую можно сжать /оптимизирован для менее массивного типа?Или, может быть, решение на уровне Stream / Writer?

1 Ответ

0 голосов
/ 03 октября 2018

Рассмотрите возможность предоставления собственных методов readObject и writeObject, которые сжимают содержимое переменной содержимого во время сериализации.См. ZipInputStream / ZipOutputStream.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...