Макс памяти для 64-битной Java - PullRequest
19 голосов
/ 19 января 2010

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

Ответы [ 5 ]

16 голосов
/ 19 января 2010

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

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

На 64-битных виртуальных машинах у вас есть 64-битная адресуемость для работы, в результате чего максимальный размер кучи Java ограничен только объемом физической памяти и объемом подкачки, предоставляемым вашей системой.также Почему я не могу получить большую кучу с 32-битной JVM?

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

java -Xmx1000g myClass 

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

14 голосов
/ 19 января 2010

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

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

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

3 голосов
/ 19 января 2010

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

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

2 голосов
/ 19 января 2010

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

0 голосов
/ 19 января 2010

Теоретически это между 2^63 и 2^64 байтами.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...