
Моя система сообщает о 8Gb, но когда я пытаюсь зарезервировать 6.5Gb heap space или даже 4Gb для программы Java, это не удается. Это потому, что я установил 32-битную версию?
Не удается выделить кучу java -Xmx3072m -jar {...}
Запускается нормально, но приложению не хватает памяти. java -Xmx2048m -jar {...}
решение1
Хотите верьте, хотите нет, но это часто задаваемый вопрос. Так что ваш ответ:здесь:
«Максимальный теоретический предел кучи для 32-разрядной JVM составляет 4 ГБ. Из-за различных дополнительных ограничений, таких как доступный своп, использование адресного пространства ядра, фрагментация памяти и накладные расходы виртуальной машины, на практике предел может быть намного ниже. В большинстве современных 32-разрядных систем Windows максимальный размер кучи будет варьироваться от 1,4 ГБ до 1,6 ГБ. В 32-разрядных ядрах Solaris адресное пространство ограничено 2 ГБ. В 64-разрядных операционных системах, работающих под управлением 32-разрядной виртуальной машины, максимальный размер кучи может быть выше, приближаясь к 4 ГБ во многих системах Solaris.
Начиная с Java SE 6 функция Windows /3GB boot.ini не поддерживается.
Если вашему приложению требуется очень большая куча, вам следует использовать 64-битную виртуальную машину в версии операционной системы, которая поддерживает 64-битные приложения. Подробности см. в разделе Поддерживаемые конфигурации системы Java SE.