它是32位/ 64位,具体取决于JVM,还是更少,因为在寻址功能时我们真的需要多种可能的地址?
当然,我们永远不会需要那么多的可能性,因为类型的数量,以及由此产生的函数数量永远不会达到这些数字?
答案 0 :(得分:1)
迄今为止最简单的实现使用函数的“真实”/完整地址,无论可能在所讨论的体系结构上是什么(例如,函数序言的第一条指令的虚拟地址)。所以,是的,这样的函数指针可能是一个大字。这是件好事!
大小并不像对象引用或对象头一样重要,因为每个方法在整个进程中只有一个这样的指针,无论有多少个实例。此外,任何收缩地址的方案都意味着你需要额外的操作来调用指向的函数(无论是一些间接,还是一些算术)。这将是糟糕的,因为它必须在每次调用虚拟方法(在优化之前所有之后,并且之后仍然相当多)之后发生。