jvm字大小和操作数堆栈

Bes*_*ver 5 java jvm

JVM规范说jvm操作数堆栈以字大小为单位工作,在许多实现中,它是本机指针的大小 - 32位系统为4个字节,64位系统为8个字节.我的问题是,如果被推入堆栈的操作数是char(2个字节)并且操作数堆栈以字大小为单位推送和弹出操作数(64位系统中为8个字节),那么这不是浪费空间?

Wil*_*ung 8

是的,它是"浪费的空间",但它极大地简化了运行时,加上字大小与它们构建的CPU相匹配,因此虽然浪费了空间,但它们在CPU处理方面实际上更有效.

它也仅适用于运行时参数和实际存储数据.

最后,如果你看一下大多数Java程序,它们传递的大部分内容都是对象的指针,而不是标量.所以这一切在洗涤中都很有用.