Макс. Память для 64-битной Java

Какое максимальное количество кучи, которое можно выделить для java на 64-битной платформе? Это неограниченно?

Ответ 1

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

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

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

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

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

java -Xmx1000g myClass 

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

Ответ 2

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

Собственно, это небольшое преувеличение.

В Вселенной (по WolframAlpha) есть 10 ^ 80 атомов и 2 ^ 64 байта адресного пространства в 64-битной системе, поэтому вы сможете обращаться только к одному из каждых 5x10 ^ 60 атомов. Но если у вас есть 18 qintillion байт ОЗУ, вам, вероятно, понадобится пара квантовых черных дыр, чтобы включить его.

Ответ 3

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

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

Ответ 4

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

Ответ 5

В теории это между 2^63 и 2^64 байтами.

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