通过哈希码从内存中获取对象

时间:2014-03-11 10:52:41

标签: java jvm

我的问题与JVM的安全级别有关

我们如何通过证明哈希码来从内存中获取对象?

今天我在想。我在执行环境One中创建了一个A类对象。并从此处获取该对象的哈希码。

现在在另一个执行环境中,我希望通过提供哈希码来返回A类对象。

我认为这是可能的。因为当我执行环境时。我一次又一次地得到JVM返回相同的哈希码。

表示它首先在其缓存中找到该对象。如果它得到了引用,它就会返回它。


现在回过头来看,我们必须了解当我们复制什么数据时 写=。

  Object a=new Object();// here as we know reference of new object will be stored in refvar a.

然后实际上是通过了什么。

如果我们得到=(等于运算符)传递的数据。我们将能够从内存中获取对象。

由于

2 个答案:

答案 0 :(得分:5)

  

我们如何通过证明哈希码来从内存中获取对象?

您无法访问JVM的内部。即使这样,您也需要扫描内存中的每个对象。除了具有相同hashCode的多个对象之外,您还会遇到此问题。 BTW:默认情况下,对象在你要求之前没有hashCode。

  

我认为这是可能的。因为当我执行环境时。我一次又一次地得到JVM返回相同的哈希码。

这只能起作用,因为你正在重新创建生成hashCode的确切条件,最轻微的改变,你会得到不同的hashCodes。

  

表示它首先在其缓存中找到该对象。如果它得到了引用,它就会返回它。

it表示您需要维护的缓存,JVM中不存在此类缓存。

  

现在回过头来看,我们必须了解在写=时会复制哪些数据。

Object a=new Object();// here as we know reference of new object will be stored in refvar a.
     

然后实际上是通过了什么。

如你所说,参考通过了。没别了。

答案 1 :(得分:1)

我想这是无关紧要的,因为哈希码可能与内存地址有关,也可能与内存地址无关 看看documentation

一般来说,每个JVM都有自己的内存堆栈,因此是否可以从其他JVM访问对象取决于JVM实现,我想这很少可能。