Какой смысл использовать Java в своей виртуальной машине? Я помню, где-то читал, что это зависит от физической машины, на которой он работает, а затем в других местах, которые я прочитал, что это всегда, я считаю, большой эндиан. Что правильно?Энтузиазм виртуальной машины Java
ответ
Многобайтовые данные в файлах class
хранятся в формате big-endian.
От The Java Virtual Machine Specification, Java SE 7 Edition, Chapter 4: The class
File Format:
Класс файл состоит из потока 8-битовых байтов. Все 64-разрядные величины 16-разрядных, 32-разрядных и построены по , представляя два, четыре и восемь последовательных 8-разрядных байтов соответственно. Элементы многобайтовых данных всегда хранятся в порядке big-endian, где на первом месте находятся верхние байт.
Кроме того, операнд в инструкции байткода также имеет большой размер, если он охватывает несколько байтов.
От The Java Virtual Machine Specification, Java SE 7 Edition, Section 2.11: Instruction Set Summary:
Если операнд больше, чем один байт в размера, то она хранится в большой обратный порядок байт порядка высокого порядка байт первого. Для например, беззнаковое индекс 16-бит в локальные переменные хранятся в виде двух беззнаковых байтов,
byte1
иbyte2
, таких , что его значение(byte1 << 8) | byte2
.
Так что да, я думаю, можно сказать, что виртуальная машина Java использует big-endian.
Фактические рабочие данные, хранящиеся в текущем процессе, почти наверняка совпадают с окончанием процесса выполнения. Обычно форматы файлов (включая файлы классов) будут в порядке сети (большой конец).
Как правило, трудно сказать, что делает машина под ней, поскольку она абстрагируется от виртуальной машины. Вы не можете наложить short[]
на byte[]
, как вы можете на C и C++. java.nio.ByteOrder.nativeOrder() должен дать вам основную цель. Соответствующая endianess полезна при использовании небайтовых буферов NIO.
- 1. Энтузиазм виртуальной машины Java (набор)
- 2. Ошибка виртуальной машины Java
- 3. Сбой виртуальной машины Java
- 4. Спецификация виртуальной машины Java
- 5. установки для виртуальной машины Java
- 6. Не найдено виртуальной машины Java
- 7. Ссылка типа виртуальной машины Java
- 8. Оптимизация виртуальной машины
- 9. Запуск новой виртуальной виртуальной машины
- 10. Преимущества виртуальной машины Zend
- 11. Интерпретатор против виртуальной машины
- 12. О аргументах виртуальной машины
- 13. Размер виртуальной виртуальной машины Java больше, чем требуется (или требуется)
- 14. аргументов виртуальной машины Java для HTTPS nonProxyHosts
- 15. Параметры настройки кучи виртуальной машины Java
- 16. Что касается экземпляров виртуальной машины Java
- 17. Реализация виртуальной машины Java iadd microcommand импровизация
- 18. виртуальной машины Java в обратном направлении compatibalitty
- 19. HelloWorld программы в код виртуальной машины Java
- 20. noEclipse Juno - Нет виртуальной машины java.
- 21. Не удалось создать ошибку виртуальной машины Java?
- 22. Любой небольшой ориентир для виртуальной машины Java
- 23. Fetching информация от виртуальной машины Java MBeans
- 24. Помощь в настройке размера виртуальной машины Java
- 25. Портирование Java-виртуальной машины Android на iPhone?
- 26. Создание виртуальной машины в Azure Java SDK
- 27. Является ли машина виртуальной машины Java зависимой?
- 28. Java-приложение на производительность виртуальной машины
- 29. сколько java виртуальной машины extst на компьютере
- 30. Bundle Часть виртуальной машины Java в проект
Этот ответ очень вводит в заблуждение. Все ссылки объясняют, как многобайтовые значения хранятся в файлах классов. И файл класса действительно использует большой endian. Однако во время выполнения все реализации Java, которые я знаю, хранят данные переменных и структур данных в собственном порядке байтов. Это, скорее всего, также относится к операндам команд после загрузки файла класса в более удобный исполняемый формат. Все остальное было бы чрезвычайно медленным на небольших архитектурных объектах, таких как i386. – Codo