我一直在具有高内存(128GB RAM)的计算机上运行内存密集型C ++ Linux应用程序。此应用程序预先保留约20GB的内存,以便稍后用作缓冲区。我希望将这个应用程序移植到某种SBC,就像Raspberry Pi一样,我实际上没有内存可用(与通常情况相比)。我的思考过程是使用HDD(可能是SDD)而不是RAM来分配20GB的内存。有没有更有效的方法来做到这一点?此外,在这种方法中,我的实现应该是什么:只是二进制文件还是别的什么?
编辑:我可以将内存分配减少到不像2GB。尽管如此,我还没有在RPi中提供那种记忆。由于整个项目是将其移植到SBC,我需要使用硬盘空间来解决它。
答案 0 :(得分:3)
我首先考虑使用mmap
来映射文件,就像交换一样。
然后,rpi使用32位ARM,这意味着你不能同时拥有所有20GB的地址,所以你需要某种内存覆盖方法:
总的来说,rpi不适合这项工作,你需要投入高昂的开发成本而不是简单地选择便宜的PC。