应用场景:
我们开发板内存可用1000M左右,
我的程序使用malloc分配576M,运行没问题;
分配768M(内存使用会达到850M)时,会发生oom,我的程序会被系统杀死。
有啥办法让我能够分配大致900M的内存呢?
方案:zram(也称为 zRAM,先前称为 compcache)是Linux内核的一项功能,可提供虚拟内存压缩。zram 通过在 RAM 内的压缩块设备上分页,直到必须使用硬盘上的交换空间,以避免在磁盘上进行分页,从而提高性能。由于 zram 可以用内存替代硬盘为系统提供交换空间的功能,zram 可以在需要交换 / 分页时让 Linux 更好利用 RAM ,在物理内存较少的旧电脑上尤其如此。
zram 在 2009 年的时候就进了 kernel 的 staging 目录
zRAM可以分出一块内存,然后让系统当作虚拟内存来使用。传统的虚拟内存是存放在磁盘上的,而zRAM存在内存里,并会进行压缩。这样的虚拟内存访问速度可以提高很多,内存利用率也会大幅提高。所以对于小内存设备,比如512M内存的Android设备,或者1G内存的电脑,都会有很大帮助。应该和OS X 10.9的内存压缩效果差不多,而且设计得更为巧妙。在CPU有较快速度的年代里,利用CPU的资源对内存进行压缩,以便在小内存设备里也能存下更多的后台进程,是个很不错的方法。
1万+

被折叠的 条评论
为什么被折叠?



