[英]What is maximal block size could be read into memory of a process?
我需要读取一个大文件,但是除了程序参数之外,用户还提供了块大小。 每个块都必须读入内存才能生成块的散列。 我怎么说这是我可以读入进程内存的最大块大小?
说,我正在使用 Boost 中的mapped_region
。 有一个参数size
,它是区域的大小。 所以我想知道我可以传递给mapped_region
的构造函数的最大大小。
C++ 标准指定的对象最大大小的最小实现限制为 262 144 字节。 允许实现支持更大的对象,而且很多都支持。
另一个限制是地址空间的大小。 例如,在 32 位地址空间中,可以寻址的内存不超过 2 32字节。 此外,某些地址空间(通常是一半或四分之一)将保留给操作系统内核。
此外,一个潜在的限制是系统上可用的物理内存量(包括交换)——除非操作系统过度使用内存,并且永远不会写入对象的内存。
此外,某些操作系统可能会限制进程可以分配的内存总量,例如 POSIX 上的RLIMIT_DATA
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.