Как запустить 32-разрядную Java на Mac OSX 10.7 Lion
Из моего опыта работы с Windows 7 (64-разрядная версия) и Java 32-разрядная JRE использует меньше памяти и работает значительно быстрее, чем 64-разрядная JRE (при условии, что вам не нужны или не нужны большие объемы памяти). Я полагаю, что то же самое верно и для Mac OSX (и других платформ).
В настоящее время я запускаю OSX Lion (v10.7), и я установил стандартное приложение Java. В разделе "Настройки Java" я вижу "Java SE 6" от "Apple Inc.", для обоих типов процессоров "32-разрядная" и "64-разрядная" версия "1.6.0_26-b03-383". Я изменил предпочтительный порядок, чтобы поместить 32-битную версию поверх 64-разрядной версии, надеясь, что это приведет к 32-разрядной версии по умолчанию.
Но "java -version" все еще говорит:
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03-383-11A511c)
Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02-383, mixed mode)
Можно ли использовать 32-разрядную версию по умолчанию? И как?
Кроме того, есть ли у кого-нибудь опыт/сравнительные измерения относительно скорости и эффективности памяти между 32/64-битными версиями?
Ответы
Ответ 1
Я выяснил, что 32-разрядную JVM можно явно запустить с помощью -d32-переключателя.
На моей машине "java -version -d32" говорит:
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03-383-11A511c)
Java HotSpot(TM) Client VM (build 20.1-b02-383, mixed mode)
и хотя он не говорит об этом, это 32-разрядная JVM.
Ответ 2
В последних версиях 64-разрядных версий Java по умолчанию используется -XX: + UseCompressedOops (если ваша куча меньше 32 ГБ). Это означает, что 32-битные ссылки используются в любом случае. Объекты все еще немного больше (на 4 байт больше служебных)
В этой статье сравниваются 32-разрядные, 64-разрядные и UseCompressedOops Java: сколько памяти потребляют разные массивы и коллекции
Что касается производительности, я обнаружил, что она составляет 5-10% в зависимости от того, что вы делаете. Если вы используете множество значений long
, быстрее будет использовать 64-разрядные версии.
Ответ 3
Перейдите в приложение "Настройки Java" и перетащите java 32 бит в начало списка.
Ответ 4
Попробуйте выполнить следующие шаги:
- Откройте терминал и перейдите в /System/Library/Frameworks/JavaVM.framework/Versions/
- Введите ls -l для отображения всех доступных версий Java.
- Введите sudo ln -fhsv CurrentJDK
Ссылка: Изменение версии Java
Ответ 5
в/System/Library/Frameworks/JavaVM.framework/Versions
Я нашел версию 1.6 установленной и изменил путь для java, javac, чтобы указать на
/System/Library/Frameworks/JavaVM.framework/Versions/1.6/home с использованием среды
псевдоним, а не ссылку по умолчанию, найденную в/usr/bin/