В основном мы заметили, что на некоторых компьютерах установка параметра JVM -Xmx (максимальный размер кучи) иногда приводит к сбою инициализации JVM, даже если в системе более чем достаточно оперативной памяти.
Так, например, на машине с 4 ГБ у нас есть -Xmx1024m, который дает сбой, но -Xmx800m работает. Я мог понять на машине с 1 ГБ, даже на машине с 2 ГБ, но на машине с 4 ГБ, особенно с учетом того, что Windows, Linux и т. Д. Могут выгружать ОЗУ, почему это не работает?
Я видел много тем и вопросов, говорящих об уменьшении максимального размера кучи, но никто не может объяснить, почему это не удается, и это то, что я действительно ищу.
Кроме того, как вы говорите, потребляйте столько памяти, сколько хотите, до определенного размера?
-Xmx
в терабайты, даже если у них не так много места подкачки. Не могли бы вы поделиться точными командами и версиями JVM, которые вы тестировали? - person alf   schedule 06.01.2012-Xmx
устанавливает максимальный размер кучи, который представляет собой просто размер зарезервированного диапазона виртуального адресного пространства; только объем, указанный в-Xms
, фактически поддерживается выделенным хранилищем. Например, см.VirtualAlloc
< /a> и сравните флагиMEM_RESERVE
иMEM_COMMIT
. - person Jeffrey Hantin   schedule 07.01.2012-Xmx
), а отображает только фактические страницы ОЗУ и/или подкачки в это адресное пространство по мере необходимости (начиная со значения-Xms
). Это ограничение реализации, возникающее в результате оптимизации — оно позволяет сборщику мусора обрабатывать всю кучу Java как один гигантский массив. - person Jeffrey Hantin   schedule 11.01.2012