Java对象中的函数引用使用了多少内存?

时间:2013-10-11 16:34:23

标签: memory-management jvm function-pointers

它是32位/ 64位,具体取决于JVM,还是更少,因为在寻址功能时我们真的需要多种可能的地址?

当然,我们永远不会需要那么多的可能性,因为类型的数量,以及由此产生的函数数量永远不会达到这些数字?

1 个答案:

答案 0 :(得分:1)

迄今为止最简单的实现使用函数的“真实”/完整地址,无论可能在所讨论的体系结构上是什么(例如,函数序言的第一条指令的虚拟地址)。所以,是的,这样的函数指针可能是一个大字。这是件好事!

大小并不像对象引用或对象头一样重要,因为每个方法在整个进程中只有一个这样的指针,无论有多少个实例。此外,任何收缩地址的方案都意味着你需要额外的操作来调用指向的函数(无论是一些间接,还是一些算术)。这将是糟糕的,因为它必须在每次调用虚拟方法(在优化之前所有之后,并且之后仍然相当多)之后发生。