public class Main {
public static void main(String[] args) {
System.out.println("Hello World!");
try {
Thread.sleep(10000);
} catch(InterruptedException e) {
/* ignored */
}
}
}
下面是我运行这个小程序时top所说的话:
PID USER PR NI
我知道数组元素在虚拟内存中是连续的,但是它们在物理内存方面像这样吗?
#define N 100*1024*1024
int arr[N];
请注意,到目前为止,大多数人都说答案是否定的,但我的主要问题是下面这个粗体。。
如果不是,至少如果一个元素是在一个页面中找到的,那么我是否可以假设整个页面都是由数组元素填充的(换句话说,它们在不同的页面中可能不是连续的,但是在每个页面中是连续的),从而提高了在读取1元素时的性能,当我们读取1元素时,我们读取了一整页附近的元素,即4096字节,而不是为下一个元素读取另一页)?
如果是的话,如果我试图在没有可用的连续物理内存的地方分配一个大数组(我相信这
我编写了一个程序,如下所示,它同时分配了大约1.2G内存,并在Linux上进行了测试。然后我发现
如果我定义了宏*WRITE_MEM*,那么物理内存的使用(由命令top检查)将线性增加。
如果我没有定义这个宏,那么物理内存的使用是非常小的(大约几百千字节),并且不会发生非常大的变化。
我不明白这个现象。
#include <iostream>
#include <cmath>
#include <cstdlib>
using namespace std;
float sum = 0.;
int main (int ar