文件拷貝的方式
- 利用FileInputStream,FileOutPutStream來進行
- 利用 java.nio 類庫提供的 transferTo 或 transferFrom;效率更高,減小沒必要要的拷貝和上下文切換
文件拷貝流程
用戶態(User Space),內核態(Kernel Space);涉及到上下文切換java
- 讀取步驟;從內核態讀取磁盤到內核緩存,切換到用戶態從內核緩存讀取磁盤信息;
- 寫入步驟:從用戶態寫入到內核緩存,內核態讀取內核緩存寫入磁盤
文件拷貝優化建議
- 利用緩存機制,合理減小io次數
- 利用transfer技術,減小上下文切換和額外的io操做
- 減小沒必要要的轉換步驟,好比編解碼
Buffer
除了Boolean類型,其餘基本類型都有buffer;緩存
- capacity,緩衝區容量
- limit,操做上限
- position,開始位置
- mark,上一次的位置,不是必須的
DirectBuffer 堆外內存優化