代码之家  ›  专栏  ›  技术社区  ›  Dean J

Java对象和数组内存位置

  •  1
  • Dean J  · 技术社区  · 15 年前

    我正在用Java编写一个数组支持的哈希表,其中键和值的类型是Object;没有其他保证。

    对我来说,代码方面最简单的方法是创建一个对象来保存它们:

    public class Pair { 
        public Object key;
        public Object value;
    }
    

    然后创建一个数组

    public Pair[] storage = new Pair[8];

    • 是指向位于其他位置的Pair()对象的指针数组,或者

    由于这些对象稍后被实例化为new Pair(),所以它们被随机放置在堆中。有没有什么好方法可以确保它们在堆中是连续的?我需要跟你耍花招吗sun.misc.unsafe 为了让它工作?

    2 回复  |  直到 15 年前
        1
  •  6
  •   Paolo    15 年前

    数组将是堆上的一个对象,包含指向成对对象的指针,这些对象也将在堆上(但与数组本身分离)。

        2
  •  1
  •   euphoria83    15 年前

    for(int i=0;i<storage.length;i++)
        storage[i] = new Pair() ;
    

    只有这样,存储阵列才会创建和正确引用成对对象。

    推荐文章