Память Max для Java на 64 бита

Каково максимальное количество пространства "кучи", которое можно выделить для Java на 64-разрядной платформе? Действительно ли это неограниченно?

19
задан Michael Berry 18 January 2012 в 11:49
поделиться

5 ответов

Хотя я согласен с OrbMan - если файл обновляется так быстро, что вы не можете получить свои изменения, основной проблемой является связь с разработчиком - существует техническое решение.

SVN поддерживает концепцию блокировки файла. Можно попытаться заблокировать файл, чтобы другие пользователи не могли зафиксировать изменения во время объединения. Когда вы принимаете изменения, вы разблокируете файл и все должно быть в порядке.

Это сказал, SVN действительно позволяет людям нарушать блокировки. На случай, если кто-то запер файл и забыл его разблокировать перед выходом в отпуск, например. Так что даже если вы заблокируете его, кто-то может взломать замок и зафиксировать свой код, прежде чем завершить слияние. Но если кто-то нарушает блокировку и фиксацию именованных пользователей, не сверяясь с ними сначала, это, вероятно, еще худший пример отсутствия связи между разработчиками и снова является скорее проблемой «людей».

-121--3206181-

После ответа от diciu можно использовать API Mach-O . Необходимо проанализировать сегменты, содержащиеся в двоичном файле, и выполнить поиск __ OBJC ; структура команды segment _ обеспечивает доступ к флагам сегмента.

Также можно просмотреть проект ClassDump . Имеет довольно полный синтаксический анализатор Mach-O.

-121--4349673-

Теоретически 2 64 , но могут быть ограничения (очевидно)

Согласно этому FAQ он ограничен только памятью и пространством подкачки в локальной системе:

На 64-разрядных виртуальных машинах у вас есть 64 бит адресности для работы с, что приводит к максимальному количеству Java-кучи

Смотрите также Почему я не могу получить большую кучу с 32-разрядным JVM?

Также имейте в виду, что необходимо установить максимальную кучу с помощью командной строки. Без команды -Xmx. без него Java использует 64 МБ + 30% = 83,2 МБ в качестве максимальной кучи по умолчанию на 64-разрядных машинах в соответствии с теми же часто задаваемыми вопросами.

java -Xmx1000g myClass 

отлично работает на моей машине. Но он, кажется, еще не поддерживает модификатор 't', поэтому вы не можете указать максимальный объем памяти в терабайтах:)

16
ответ дан 30 November 2019 в 03:43
поделиться

Это, вероятно, зависит от системы, в которой находится ваша виртуальная машина. Если вы запустите архитектуру AMD X64, адрес доставки поставляемых в настоящее время разгруженных процессоров использует 48 битов, а не 64. Это приводит к теоретическому максимуму примерно 256 тб. (См. http://en.wikipedia.org/wiki/x86-64 )

Я не специалист в виртуальных машинах, но любая современная ОС, как правило, даст столько памяти, как есть физическая память плюс доступная виртуальная память. , вероятно, Это то, что VM пройдет к вашему приложению в зависимости от его конфигурации.

3
ответ дан 30 November 2019 в 03:43
поделиться

Если вы могли бы сделать каждый атом во вселенной в байте оперативной памяти, вы можете выделить его в 64-битных адресном пространстве.

На самом деле, это небольшое преувеличение.

Во вселенной 10 ^ 80 атомов (согласно Wolframalpha), и 2 ^ 64 байта адресного пространства в 64-битной системе, поэтому вы сможете решить только 1 из каждых 5x10 ^ 60 атомов. Но если у вас 18 Qintillion Bytes of Ram, вам, вероятно, понадобится пару квантовых черных дыр, чтобы включить его.

14
ответ дан 30 November 2019 в 03:43
поделиться

в теории его между 2 ^ 63 и 2 ^ 64 байты.

На практике он ограничен количеством физической памяти и помещения подкачки, доступных на вашем компьютере. И физическая память в свою очередь, ограничена вашим чипсом (то есть число контактов адресов на шине физической памяти) и материнской платы (I.E. Номер и размер разъемов DIMM).

0
ответ дан 30 November 2019 в 03:43
поделиться

с недавними виртуальными машинами от солнца, практичный размер пределов кучи обычно составляет 512 раз. Доступная физическая и / или виртуальная память. Даже если теоретический предел намного выше, VM выделит 1 байт для целей заправки для каждой 512 байтов памяти кучи при запуске, поэтому 1tb кучи немедленно потребует 2 ГБ для управления памятью.

2
ответ дан 30 November 2019 в 03:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: