本文链接:
控制台输入free -m命令:
total used free shared buffers cached。total used free shared buffers cached。total used free shared buffers cached。
Mem: 64267 33905 22704 286 7658 29509
Swap: 32416 48 32367
第二行
total:系统内存总量。
used:%20系统已使用的内存。
free:系统未使用内存。
shared:多个进程共享内存。
参数lpbuf用于指定要写到文件中的数据缓冲区的指针,ncount表示从数据缓冲区传送的字节数。先举例说说“按重要级分割”,在网络游戏中,同样是角色的数据,有些数据的变化可能会每次修改都立刻回写到数据库(清理写缓存)linux命令,其他一些数据的变化会延迟一段时间,甚至有些数据直到角色退出游戏才回写,如玩家的等级变化(升级了),武器装备的获得和消耗,这些玩家非常看重的数据,基本上会立刻回写,这些就是所谓最重要的缓存数据。缓冲这个词意思是,缓冲信道不仅可以流通数据,还可以缓存数据。
available:可用内存。
第三行
total:交换区内存总量。
used:交换区已使用的内存。
free:交换区未使用的内存。
我的理解,当用delete来释放用new int[]申请的内存空间时,由于其为基本数据类型没有析构函数,所以使用delete与delete []相同,两者都会释放申请的内存空间,若是自定义的数据类型,有析构函数时linux命令,用new []申请的空间,必须要用delete []来释放,因为要delete []时会逐一调用对象数组的析构函数,然后释放空间,如果用delete,则只会调用第一个对象的析构函数,后面对象的析构函数没有被调用,那么其空间是否释放了呢。随后1kb的内存使用完毕需要释放,系统会按顺序把1kb内存插入到空闲内存链表中。若应用程序又需要申请3 kb的内存,而在空闲内存块链表中能满足申请内存要求的最小空闲内存块为5kb,因此把5kb内存拆分为2部分,3kb部分用于满足申请内存的需要,2kb部分作为新的空闲内存块插入链表。
used+free+buff/cache = 33905 + 22704 +7658 = 64267。