JVM规范指出,在许多实现中,jvm操作数栈的工作单位为字大小,这在32位系统中通常是本机指针的大小-4个字节,在64位系统中为8个字节。我的问题是,如果被压入堆栈的操作数是char(2个字节),而操作数栈按字大小(64位系统中为8个字节)推入和弹出操作数,那么这不是浪费空间吗?
JVM规范指出,在许多实现中,jvm操作数栈的工作单位为字大小,这在32位系统中通常是本机指针的大小-4个字节,在64位系统中为8个字节。我的问题是,如果被压入堆栈的操作数是char(2个字节),而操作数栈按字大小(64位系统中为8个字节)推入和弹出操作数,那么这不是浪费空间吗?
是的,它是"浪费的空间",但它极大地简化了运行时,而且字长与它们构建的CPU相匹配,因此虽然浪费空间,但在CPU处理方面更加高效。
而且这仅仅是针对运行时参数,而不是实际存储的数据。
最后,如果你查看大多数Java程序,它们传递的大部分内容都是指向对象的指针,而不是标量。因此,在清洗过程中,它们基本上都能正常工作。