快速填滿手機儲存空間的方法實踐-coolpady90為例

weixin_34129145發表於2016-07-15

很多時候我們需要進行臨界測試。
譬如當手機盤空間存滿的條件下應用會有何表現等。
之前,我都是先檢視下手機U盤還剩餘多少空間,再往該磁碟中拷貝一個差不多大的檔案,如果發現還有剩餘空間的話,則是通過開啟 720P 錄影來佔滿。
這個過程會很耗時,尤其當手機盤空間很大的情況下,譬如剩餘32G等。
如今找到一種比較快捷的方式:
通過如下 adb 命令在 手機的/mnt/sdcard/ 目錄下產生一個名為 bigfile 的檔案,讓其自動增長到磁碟剩餘空間大小。
shell@CoolpadY90:/mnt/sdcard $ pwd
/mnt/sdcard
shell@CoolpadY90:/mnt/sdcard $ dd if=/dev/zero of=test bs=1m count=10001000+0 records in1000+0 records out1000 bytes transferred in 0.342 secs (2923 bytes/sec)

如上,使用coolpady90實踐,bs=1024000,count=1,結果為存入1M大小的檔案
dd if=/dev/zero of=test bs=1M count=1000:會生成一個1000M的test檔案(實踐中設定1M並無法建立1000M的檔案,貌似無法識別M的單位,預設的單位是Bit,1024000是1M)。
上述方式是實際寫入硬碟,檔案產生的速度取決於硬碟讀寫速度,如果想產生超大檔案速度很慢,有些情況下我們只想讓系統認為存在一個超大檔案在此,但是並不實際寫入硬碟則可以:
dd if=/dev/zero of=test bs=1M count=1000 seek=100000
此時建立的檔案系統中的顯示大小為100000MB,但並不實際佔用block

****檢視記憶體:****less /proc/meminfo****

MemTotal: 1948116
kBMemFree: 151204
kBBuffers: 178000
kBCached: 421388
kBSwapCached: 0
kBActive: 1137704
kBInactive: 299372
kBActive(anon): 840352
kBInactive(anon): 3072
kBActive(file): 297352
kBInactive(file): 296300
kBUnevictable: 2504
kBMlocked: 0
kBHighTotal: 1318908
kBHighFree: 41356
kBLowTotal: 629208
kBLowFree: 109848
kBSwapTotal: 0
kBSwapFree: 0
kBDirty: 32
kBWriteback: 0
kBAnonPages: 840208
kBMapped: 149256 kB

佔用記憶體的測量
測量一個程式佔用了多少記憶體,Linux系統為我們提供了一個很方便的方法,/proc目錄為我們提供了所有的資訊,實際上top等工具也通過這裡來獲取相應的資訊。
/proc/meminfo 機器的記憶體使用資訊
/proc/pid/maps pid為程式號,顯示當前程式所佔用的虛擬地址。
/proc/pid/statm 程式所佔用的記憶體
[root@localhost ~]# cat /proc/self/statm

檢視機器可用記憶體
/proc/28248/>free
total used free shared buffers cached
Mem: 1023788 926400 97388 0 134668 503688
-/+ buffers/cache: 288044 735744
Swap: 1959920 89608 1870312

我們通過free命令檢視機器空閒記憶體時,會發現free的值很小。這主要是因為,在Linux系統中有這麼一種思想,記憶體不用白不用,因此它儘可能的cache和buffer一些資料,以方便下次使用。但實際上這些記憶體也是可以立刻拿來使用的。
所以 空閒記憶體=free+buffers+cached=total-used
shell@CoolpadY90:/ $ busybox free -m total used free shared buffersMem: 1902 1840 62 0 113-/+ buffers: 1726 175
Swap: 0 0 0

相關文章