Максимальная память для 64bit Java

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

5 ответов


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

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

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

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

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

java -Xmx1000g myClass 

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


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

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

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


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

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


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


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

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