【发布时间】:2025-12-15 03:45:02
【问题描述】:
我在这个网站上看到了一个类似的问题,但没有有用的答案。
场景:
以下是数据传输过程,
嵌入式设备-------->buffer-------->AWS(云存储)条件:
由于嵌入式设备的限制,没有足够的内存来存储数据。我的想法:
使用 mmap() 在磁盘上分配“内存”,并在另一个库上管理数据中继,该库是 github 上的一个开源库。问题:
但是,我现在才发现它会在真实内存中占用内存。这种方法似乎无法解决我的情况。
你的想法是什么?哥们……
【问题讨论】:
-
mmap() 不占用实际内存,它占用虚拟内存。您的嵌入式设备是否支持 mmap() 并且它是否具有 MMU(提供内存能力)
-
是的,我的设备支持 mmap()。我的测试程序是: 1.打开一个文件,lseek到2GB。 2.将文件描述传递给mmap,它会返回一个指针。 3.将1字节数据写入指针前导缓冲区0x7fffffff次(2GB数据)。 4.程序运行时,使用'pgrep'获取test.out的pid,'cat /proc/pid/status | grep VmRSS' 查看真实内存。我发现 VmRSS 值随着交换文件而增长
-
很高兴我们是朋友。 :-D 你的嵌入式设备上有或可以有外部闪存吗?
-
VmRSS 不是“实际内存使用情况”。
-
不是吗?那么,如何知道一个程序占用了多少内存呢?