【问题标题】:Split big object before persisting it to file在将大对象保存到文件之前拆分它
【发布时间】:2018-04-03 02:01:45
【问题描述】:

我的 java 应用程序堆中有一个占用大约 15GB 的对象,我需要在 JVM 重新启动之间保持它的持久性。我使用 ObjectOutputStream 的 writeObject 方法在每个时间间隔将其写入磁盘上的文件。由于写入过程非常长(几分钟)并导致一些 GC 问题,我想以某种方式拆分对象以将每个部分分别保存到不同的文件中,而不是在单个文件中的单个操作中。 有没有办法做到这一点(当然,当我需要它时从文件中检索它)?

        FileOutputStream fos = null;
        GZIPOutputStream gos = null;
        ObjectOutputStream oos = null;
        try {
            fos = new FileOutputStream("some_path");
            gos = new GZIPOutputStream(fos);
            oos = new ObjectOutputStream(gos);
            oos.writeObject(myLargeObject);
            oos.flush();
            gos.close();
            fos.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

【问题讨论】:

    标签: java garbage-collection fileoutputstream objectoutputstream


    【解决方案1】:

    您可能想看看this 的答案。重组拆分文件的逆过程只不过是从每个单独的文件中读取并附加到“主”文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-26
      • 2022-01-26
      • 2011-02-17
      • 1970-01-01
      • 1970-01-01
      • 2018-01-29
      • 2021-12-14
      • 1970-01-01
      相关资源
      最近更新 更多