Во время чтения этой книги здесь.
Я вижу следующий раздел, в котором говорится:
32 OR 64 BIT? Если у вас 32-разрядная операционная система, вы должны использовать 32-битная версия JVM. Если у вас 64-разрядная операционная система, то вы можете использовать 32- или 64-разрядную версию Java. Не предполагайте, что только потому, что у вас 64-битная операционная система, вы также должен использовать 64-разрядную версию Java.
Если размер вашей кучи будет меньше, чем около 3 ГБ, 32-битный версия Java будет быстрее и иметь меньший размер. Это потому что ссылки на память в JVM будут только 32 бит, и манипулирование этими ссылками памяти дешевле, чем манипулируя 64-битными ссылками (даже если у вас 64-разрядный процессор). 32-битные ссылки также используют меньше памяти.
В главе 8 обсуждается сжатый oops, который является способом, которым JVM может используйте 32-разрядные адреса даже в 64-разрядной JVM. Однако даже с эта оптимизация, 64-битная JVM будет иметь больший след, поскольку в его собственном коде все равно будут 64-битные адреса.
Недостатком 32-битной JVM является то, что общий размер процесса должен быть менее 4 ГБ (3 ГБ на некоторых версиях Windows и 3,5 ГБ на некоторых старых версии Linux). Это включает кучу, перджен и родную кода и собственной памяти, используемой JVM. Программы, которые широко используются длинных или двойных переменных будет медленнее на 32-битной JVM, потому что они не могут использовать 64-разрядные регистры процессоров, хотя это очень исключительный случай.
Программы, которые вписываются в 32-разрядное адресное пространство, будут выполняться в любом месте от 5% до 20% быстрее в 32-разрядной JVM, чем аналогично настроенная 64-разрядная JVM. Программа дозирования акций, обсуждавшаяся ранее в этом документе глава, например, на 20% быстрее при запуске на 32-разрядной JVM на моем рабочий стол.
Строки говорят, что 32-разрядный бит будет быстрее для меньшего размера кучи (менее 3 ГБ). Если это правда, я хочу знать причину этого, что делает 32-разрядную JVM быстрее?