簡體   English   中英

你如何在java中編寫零副本? 主要區別是什么

[英]How do you write zero copy in java? What are the main differences

我正在閱讀有關如何使用 java nio 庫來利用 O/S 級別的文件傳輸/緩沖(稱為“零復制”)的信息。

那么,您創建/寫入文件的方式有何不同? 使用零拷貝有什么缺點嗎?

零拷貝意味着你的程序不會將數據從內核空間傳輸到用戶空間等等。 這是更快的好文章,可以在這里找到: http : //www.ibm.com/developerworks/library/j-zerocopy/

零復制是一種技術,在這種技術中,應用程序不再是將數據從磁盤傳輸到套接字的“中間人”。 使用零復制的應用程序要求內核直接將數據從磁盤文件復制到套接字,而無需通過應用程序,從而提高性能並減少上下文切換。

這完全取決於應用程序將如何處理它從磁盤讀取的數據。 如果它是一個通過讀取文件並通過套接字中繼它們來提供大量靜態內容的 Web 應用程序,那么零復制是獲得更好性能的方法。 但是,如果應用程序在本地使用數據(以某種方式對其進行處理然后將其寫回,或者在本地顯示而不將其持久化),則不會使用零復制。

這篇關於零拷貝的IBM DeveloperWorks 文章值得一讀。

Java 中文件 I/O 的其他方式是通過使用基於您想要讀/寫的文件類型的 Stream 類。 這涉及緩沖和未緩沖的流,盡管通常緩沖的流承諾更好的性能,因為它們會導致更少的 I/O 尋道周期,因此更少的上下文切換。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM