Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用ObjectOutputStream为大量自定义对象编写数据块_Java - Fatal编程技术网

Java 如何使用ObjectOutputStream为大量自定义对象编写数据块

Java 如何使用ObjectOutputStream为大量自定义对象编写数据块,java,Java,我正在用Java中的ObjectOutputStream编写一个巨大的自定义对象列表 代码片段如下,我的问题是ObjectOutputStream的用法 我应该使用BufferedOutputStream而不是ObjectOutPutStream来提高循环中写入操作的性能吗?或者是否有一种方法可以使用数据块写入ObjectOutputStream,以及如何在for循环中调用flush()? 谢谢你的时间 protected void writeTransferObject(List<? e

我正在用Java中的ObjectOutputStream编写一个巨大的自定义对象列表 代码片段如下,我的问题是ObjectOutputStream的用法
我应该使用BufferedOutputStream而不是ObjectOutPutStream来提高循环中写入操作的性能吗?或者是否有一种方法可以使用数据块写入ObjectOutputStream,以及如何在for循环中调用flush()? 谢谢你的时间

protected void writeTransferObject(List<? extends DataTransfer> dataTransferList,
        HttpServletResponse response)
    {
        try (ObjectOutputStream oos = new ObjectOutputStream(response.getOutputStream()))
        {
            for ( DataTransfer dataTransfer : dataTransferList)
            {
                oos.writeObject(dataTransfer);
               
            }
        }
        catch (IOException ioe)
        {
            ioe.printStackTrace();
        }       
    }

protectedvoid writeTransferObject(List首先,针对您的性能问题:Java的运行速度总是比磁盘写入速度快,因此在Java中进行优化没有多大意义

第二:输入/输出缓冲区:只有在执行低效的读/写操作时才需要这些缓冲区:例如,在读端,逐行读取,而不仅仅是狼吞虎咽地读取字节;在写端,在作为一个I/O操作发送之前,从多个位置写入碎片


第三:ObjectOutputStream:我强烈建议不要使用ObjectOutputStream(和DataOutputStream),并推荐Jackson/JSON或XML作为替代。ObjectOutputStream仅限Java,依赖于所有序列化对象来合理实现可序列化,并且对类定义中的更改非常敏感。

如果使用
流而不是
列表
,则可能可以提高性能。
列表
它的所有对象同时都在RAM中-如果RAM不足,那么操作系统开始交换内存,这需要大量CPU时间。这为攻击者打开了一扇大门。只需谷歌搜索“java漏洞可序列化类”,你就会找到很多解释。