很多时候我们需要进行临界测试。
譬如当手机盘空间存满的条件下应用会有何表现等。
之前,我都是先查看下手机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