Будет ли 64-разрядная JVM работать в режиме 64 бит, если не указан параметр -d32 или -d64
Я установил 64-битную Java на 64-битной платформе Centos. Мой запрос заключается в том, что если я не укажу опцию -d64, JVM будет работать в 32-битном режиме, даже если 32-битная JVM не установлена?
Также мне было немного любопытно, можно ли использовать опцию -d64 с "javac". Если да, то что это означает или где его можно использовать? Я натолкнулся на это, читая эту статью.
Спасибо
Ответы
Ответ 1
Выбор модели данных (бит) для JRE заключается в том, чтобы ограничить работу приложения только в одном режиме. Java-байтовый код предназначен для работы в обеих моделях данных, поэтому для 100% -ных Java-приложений будет работать в соответствии с поведением и преимуществами каждой архитектуры.
Но если ваше приложение использует собственные библиотеки, а не работает только в одном режиме, то приложение будет работать под не поддерживаемым. Для этого вы должны указать, в каком режиме может работать.
Когда вы устанавливаете -d32 или -d64, JRE будет не запускать ваше приложение, если оно не может работать в выбранном режиме.
Ответ 2
Из документа Oracle, с которым вы связались:
Как выбрать между 32 и 64-битной операцией? Что по умолчанию?
Параметры -d32 и -d64 были добавлены в программу запуска Java, чтобы указать, должна ли программа запускаться в 32- или 64-разрядной среде. В Solaris они соответствуют моделям данных ILP32 и LP64, соответственно. Поскольку Solaris имеет 32 и 64-разрядную реализацию J2SE, содержащуюся в одной и той же установке Java, вы можете указать любую версию. Если не указано ни -d32, либо -d64, по умолчанию будет выполняться в 32-разрядной среде.
Другие Java-команды (javac, javadoc и т.д.) Редко должны выполняться в 64-битной среде. Тем не менее, параметры -d32/-d64 могут быть переданы этим командам, а затем в Java-пуск, используя установленную опцию -J prefix (например: -J-d64).
Все остальные платформы (Windows и Linux) содержат отдельные 32 и 64-разрядные установочные пакеты. Если оба пакета установлены в системе, вы выбираете один или другой, добавляя соответствующий каталог "bin" к вашему пути. Для согласованности реализации Java в Linux принимают параметр -d64.
(акцент мой)
Итак, согласно документу, к которому вы привязались, по умолчанию запускается 32-разрядная JRE, и можно запустить javac в 64-битной JRE, передав -J-d64
, а не просто -d64
.
Однако обратите внимание, что в этом документе также говорится, что он применяется к Java 1.4 и ничего не говорит о более поздних версиях Java.