Макс. Память для 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).