0

如果我没有假设或学到任何错误,那么我们分配的所有变量都会占据 RAM 的某个位置。例如,在使用 Java 数组时,当我们尝试打印一个数组时,它会打印一个“位置”。

字符串 [] a = 新字符串 [2]

System.out.println(a)

[Ljava.lang.String;@be6280

现在有没有办法设置那个位置?

我认为使用 C++ 是可能的,是吗?如果有任何语言提供这个东西,那么我应该能够至少彻底地扫描我的 RAM 中的变量或数组位置。我不能吗?有没有人试过这样做?

4

4 回答 4

1

您可以使用 Unsafe 类,如此处所示。这是特定于 HotSpot JVM 的,但它可能只是一个开始。

于 2012-12-24T15:32:14.733 回答
0

不,这在 Java 中是不可能的。对于调试工具和其他特殊工具的开发人员来说,有一个用于直接访问内存的后门,但这并不是您和 99.995% 的其他人想要的。

于 2012-12-24T15:32:26.963 回答
0

Java 中的内存 (RAM) 由 Java 虚拟机 (JVM) 控制,与其他编程环境不同,无法在 Java 堆中手动处理内存分配。您可以使用 JNI 或 NIO 在 Java 之外分配内存。

于 2012-12-24T15:37:15.000 回答
0

设置位置非常不安全,因为 GC 可以随时执行,损坏的内存结构会使 JVM 崩溃。

你可以得到一个对象的位置,但你不需要这个。您可以使用 Reflections 获取对象的任何字段,但您可以使用 Unsafe 提取或设置字段。

于 2012-12-24T16:12:59.767 回答