Memory
緩衝區/記憶體使用的變化
我試圖查看讀取操作期間使用的緩衝區/記憶體的變化。
free -m truncate -s 10M /home/andy/Downloads/10_Mb_File.txt cat 10_Mb_File.txt > /dev/null; free -m #andy@7 ~/Downloads> Create_10_Mb_File.sh #total used free shared buff/cache available #Mem: 6894 1414 2529 24 2951 5162 #Swap: 0 0 0 #total used free shared buff/cache available #Mem: 6894 1414 2518 24 2961 5161 #Swap: 0 0 0
為什麼在 10 Mb 讀取期間會有這麼小的變化?
這確實會創建一個包含實際字元的文件。但是緩衝區/記憶體使用沒有變化。
</dev/urandom tr -dc A-Za-z0-9 | head -c1000000 > /home/andy/Downloads/random.txt cat /home/andy/Downloads/random.txt > /dev/null; free -m
因為您的作業系統知道您正在讀取 0 個字節,所以它不需要緩衝。
甚至閱讀,因為它們從未被寫過。在您的通話過程中,實際發生的所有事情
truncate
是文件系統現在包含一個註釋“這裡有 10 MB 的零。”。這就是稀疏文件的魔力!