Memory

緩衝區/記憶體使用的變化

  • September 4, 2022

我試圖查看讀取操作期間使用的緩衝區/記憶體的變化。

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 的零。”。這就是稀疏文件的魔力!

引用自:https://unix.stackexchange.com/questions/716131