您如何在Java中编写零副本?主要区别是什么

问题描述 投票:7回答:2

[我正在阅读如何使用java nio库在O / S级别上利用文件传输/缓冲,这被称为“零复制”。

然后在创建/写入文件方面有什么区别?使用零复制有任何弊端吗?

java file-io zero-copy
2个回答
8
投票

零复制意味着您的程序不会将数据从内核空间传输到用户空间,依此类推。这更快不错的文章可以在这里找到:http://www.ibm.com/developerworks/library/j-zerocopy/


5
投票

零复制是一种技术,在将数据从磁盘传输到套接字的过程中,应用程序不再是'中间人'。使用零复制的应用程序要求内核直接将数据从磁盘文件复制到套接字,而无需通过应用程序,从而提高了性能并减少了上下文切换。

这完全取决于应用程序如何处理从磁盘读取的数据。如果这是一个通过读取文件并通过套接字中继它们来提供大量静态内容的Web应用程序,那么为了获得更好的性能,应该采取零复制的方式。但是,如果应用程序在本地使用数据(以某种方式处理数据然后将其写回,或在本地显示而不保留其持久化),则不会使用零拷贝。

IBM DeveloperWorks article大约为零副本是一本好书。

Java中文件I / O的其他方式是通过使用Stream类,该类基于要读取/写入的文件类型。这通常涉及缓冲流和非缓冲流,尽管通常缓冲流会带来更好的性能,因为它们会导致更少的I / O寻道周期,从而减少上下文切换。

© www.soinside.com 2019 - 2024. All rights reserved.