我的目标是确保在 java 中分配的数组是在连续的物理内存中分配的。我遇到的问题是,分配数组的页面在物理内存中往往不是连续的,除非我分配了一个非常大的数组。
我的问题是:
- 为什么一个非常大的数组可以确保物理内存中的页面是连续的?
- 有什么方法可以确保在物理内存中分配数组,而不涉及使数组非常大?
- 如何在不测量缓存命中/缓存未命中的情况下判断 Java 对象/数组存在于哪个页面或物理地址?
我不是在寻找答案,询问我为什么在 java 中这样做。我知道 C 会“解决我的问题”,而且我违背了 java 的基本性质。尽管如此,我有充分的理由这样做。
不需要保证答案一直有效。我正在寻找大部分时间都有效的答案。没有任何合理的 Java 程序员会写出创造性的、开箱即用的答案的额外分数。特定于平台(x86 32 位 64 位)是可以的。