【发布时间】:2010-08-09 21:35:12
【问题描述】:
我正在用 Java 编写一个数组支持的哈希表,其中键和值的类型是 Object;没有其他保证。
对我来说最简单的代码方式是创建一个对象来保存它们:
public class Pair {
public Object key;
public Object value;
}
然后创建一个数组
public Pair[] storage = new Pair[8];
但是 jvm 如何在内存中处理它?也就是说,数组究竟会不会:
- 是指向其他地方的 Pair() 对象的指针数组,或者
- 包含实际数据?
编辑
由于对象稍后被实例化为 new Pair(),它们被随机放置在堆中。有什么好的方法可以确保它们在堆中是连续的?我是否需要对 sun.misc.unsafe 做一些诡计才能使其发挥作用?
解释我的动机,如果我想尝试确保连续项目在同一内存页中,有没有办法在 Java 中做到这一点?
【问题讨论】:
-
我想你知道,但是 public Pair[] storage = new Pair[8];不创建对对象。只是说,如果你没有。 :)
标签: java arrays memory hashtable paging