Java虚拟机中,最基本的数据单元就是字(word ),它的大小是由每个虚拟机实现的设计者 来决定的。字长必须足够大,至少是一个字单元就足以持有byte、short, int、char, float, return Address或者reference类型的值,而两个字单元就足以持有long或者double类型的值。因此, 虚拟机实现的设计者至少得选择32位作为字长,或者选择更为高效的字长大小。通常根据底层 主机平台的指针长度来选择字长。
在Java虚拟机规范中,关于运行时数据区的大部分内容,都是基于“字”这个抽象概念的。 比如,关于栈帧的两个部分——局部变量和操作数栈——都是按照“宇”来定义的。这些内存 区域能够容纳任何虚拟机数据类型的值,当把这些值放到局部变量或者操作数找中时,它将占 用一个或两个字单元。
在运行时,Java程序无法侦测到底层虚拟机的字长大小;同样,虚拟机的字长大小也不会影 响程序的行为——它仅仅是虚拟机实现的内部属性。