/dev/shm 中的文件在使用 ftruncate 增长时是否占用内存但未写入?
Do files in /dev/shm take up memory when grown with ftruncate but are not written?
我正在使用 mmap 创建共享内存段,我想知道我是否可以在不触发任何内存使用的情况下预先创建我可能在 /dev/shm 中使用的所有段。我怀疑这可能是可能的原因是我知道大多数文件系统都有全零页的概念,并且当您在执行任何写入之前最初增加文件时可能会使文件不会真正占用 space因为这些 'hole' 页。但是对于 tmpfs(/dev/shm 的文件系统)是这样吗?我可以在 /dev/shm 中疯狂地制作大文件而不触发内存使用,只要我不写入它们吗?
在 Linux 上,tmpfs
文件系统支持稀疏文件。只是调整文件大小不会分配内存(超出内部 tmpfs
数据结构)。就像支持稀疏文件(有漏洞的文件)的常规文件系统一样,您要么必须实际写入数据,要么使用 fallocate
分配后备存储。据我所知,自 Linux 2.6 天以来一直如此。
我正在使用 mmap 创建共享内存段,我想知道我是否可以在不触发任何内存使用的情况下预先创建我可能在 /dev/shm 中使用的所有段。我怀疑这可能是可能的原因是我知道大多数文件系统都有全零页的概念,并且当您在执行任何写入之前最初增加文件时可能会使文件不会真正占用 space因为这些 'hole' 页。但是对于 tmpfs(/dev/shm 的文件系统)是这样吗?我可以在 /dev/shm 中疯狂地制作大文件而不触发内存使用,只要我不写入它们吗?
在 Linux 上,tmpfs
文件系统支持稀疏文件。只是调整文件大小不会分配内存(超出内部 tmpfs
数据结构)。就像支持稀疏文件(有漏洞的文件)的常规文件系统一样,您要么必须实际写入数据,要么使用 fallocate
分配后备存储。据我所知,自 Linux 2.6 天以来一直如此。