Макс памяти для 64-битной Java
Какой максимальный объем кучи можно выделить для Java на 64-битной платформе? Это неограниченно?
5 ответов
Теоретически 2 64, но могут быть ограничения (очевидно)
Согласно этому FAQ, он ограничен только памятью и пространством подкачки в локальной системе:
На 64-битных виртуальных машинах у вас есть 64-битная адресуемость для работы, в результате чего максимальный размер кучи Java ограничен только объемом физической памяти и объемом подкачки, предоставляемым вашей системой.См. Также Почему я не могу получить большую кучу с 32-разрядной JVM?
Также имейте в виду, что вам нужно установить максимальную кучу через командную строку. Без команды -Xmx. без этого Java использует 64 МБ + 30% = 83,2 МБ в качестве максимальной кучи по умолчанию на 64-разрядных машинах в соответствии с тем же FAQ.
java -Xmx1000g myClass
отлично работает на моей машине. Но, похоже, он еще не поддерживает модификатор 't', поэтому вы еще не можете указать максимальный объем памяти в терабайтах:)
Если бы вы могли превратить каждый атом во вселенной в байт оперативной памяти, вы могли бы разместить его в 64-битном адресном пространстве.
На самом деле, это небольшое преувеличение.
Во вселенной 10^80 атомов (согласно WolframAlpha) и 2^64 байта адресного пространства в 64-битной системе, так что вы сможете адресовать только 1 из каждых 5x10^60 атомов. Но если у вас есть 18 квинтиллионов байтов оперативной памяти, вам, вероятно, понадобится пара квантовых черных дыр для питания.
Вероятно, это зависит от системы, в которой работает ваша виртуальная машина. Если вы используете архитектуру AMD x64, адресное пространство процессоров, поставляемых в настоящее время, использует 48 бит, а не 64. В результате теоретический максимум составляет примерно 256 ТБ. (См. http://en.wikipedia.org/wiki/X86-64).
Я не специалист по виртуальным машинам, но любая современная ОС обычно дает столько памяти, сколько имеется физической памяти плюс доступная виртуальная память. Вероятно, именно это виртуальная машина передаст вашему приложению в зависимости от ее конфигурации.
На последних виртуальных машинах Sun практический предельный размер кучи обычно в 512 раз превышает доступную физическую и / или виртуальную память. Даже если теоретический предел намного выше, виртуальная машина будет выделять 1 байт для целей управления на каждые 512 байт памяти кучи при запуске, поэтому 1 ТБ кучи немедленно потребует 2 ГБ для управления памятью.
В теории это между 2^63
а также 2^64
байт.
На практике это ограничено объемом физической памяти и пространства подкачки, доступных на вашем компьютере. А физическая память в свою очередь ограничена вашим набором микросхем (т. Е. Количеством выводов адреса на шине адреса физической памяти) и материнской платой (т. Е. Количеством и размером разъемов DIMM).