1
11
你试过用
|
2
5
这个数组到底有多稀疏?如果其中有大量空(未使用)空间,则可能需要采取其他方法。这个 answer to this question 建议使用stl映射。 如果它不是稀疏的(如注释中提到的),那么有一件事您可以考虑,因为您是在windows上运行的 memory-mapped file . 虽然您的操作系统可能是32位的,但您的文件系统不是。当然,这意味着交换会继续进行,这可能会比你真的把所有该死的东西放到ram中要慢得多。 另外,你真的应该考虑把系统的ram提高到最大值(我相信32位windows上是3gb),看看这是否能帮你解决问题。你只需要花100美元,而且你花在工时上的钱还不止这些,只是担心这个。 |
3
3
从程序的角度来看,无论系统中发生了什么,启动时始终有2GB可用。我不相信windows提供了一种检测内存是否被调出磁盘的方法。就数据结构而言,听起来像是在描述类似于在stl中如何实现deque的东西。 |
4
1
STD:DeQue:确实是你所描述的,但通常在操作系统页面大小的粒度(即,它分配的块通常为4 KB)。 如果您对deque的默认性能不满意,那么您可以编写一个自定义分配器来获取更大的块——也就是说,一次获得1 MB或更多。 正如其他人所说,进程的虚拟地址空间完全独立于所有其他进程,因此无论系统中发生什么,都可以寻址2GB。操作系统将根据需要将内存页交换到磁盘或从磁盘交换内存页,以适应安装内存量和所有争用内存的进程的限制。这将发生在4kb的页面大小,与块的大小无关。 |
Toniq · javascript为php保存多维数组 1 年前 |
Jannis · Java中数组的怪异行为 1 年前 |
callum · 如何识别数组中与给定序列不匹配的元素? 1 年前 |
tenfour · 如何使用数组元素的索引初始化数组元素 2 年前 |
Guillaume · 使用操作从Python列表创建numpy数组 2 年前 |
maxMas · Swift 5:为什么会出现索引超出范围错误? 2 年前 |