Respuesta corta: sí, los valores booleanos se manipulan como entidades de 32 bits, pero las matrices de booleanos usan 1 byte por elemento.
Respuesta más larga: la JVM usa una celda de pila de 32 bits, que se usa para contener variables locales, argumentos de método y valores de expresión. Las primitivas de menos de 1 celda se rellenan, las primitivas de más de 32 bits (largas y dobles) toman 2 celdas. Esta técnica minimiza el número de códigos de operación, pero tiene algunos efectos secundarios peculiares (como la necesidad de enmascarar bytes).
Las primitivas almacenadas en matrices pueden usar menos de 32 bits y existen diferentes códigos de operación para cargar y almacenar valores primitivos de una matriz. Los valores booleanos y de bytes usan ambos códigos de operación baloady bastore, lo que implica que las matrices booleanas toman 1 byte por elemento.
En lo que respecta al diseño de objetos en memoria, esto está cubierto por las reglas de "implementación privada" , puede ser de 1 bit, 1 byte o, como señaló otro cartel, alineado con un límite de palabra doble de 64 bits. Lo más probable es que tome el tamaño de palabra básico del hardware subyacente (32 o 64 bits).
En cuanto a minimizar la cantidad de espacio que usan los booleanos: realmente no es un problema para la mayoría de las aplicaciones. Los marcos de pila (que contienen variables locales y argumentos de método) no son muy grandes y, en el esquema grande, un booleano discreto en un objeto tampoco es tan grande. Si tiene muchos objetos con muchos valores booleanos, puede usar campos de bits que se administran a través de sus getters y setters. Sin embargo, pagará una penalización en el tiempo de CPU que probablemente sea mayor que la penalización en la memoria.