В любом случае, чтобы установить более максимальную оперативную память для Tomcat 32bit?Почему жесткий предел на 1 ГБ и 1,6 ГБ - PullRequest
0 голосов
/ 04 января 2019

Кажется, что-то странное происходит ... У меня есть приложение на tomcat, которое раньше было на 32-битном стандартном физическом сервере Windows 2008, которое я p2v сделал с виртуальным конвертером vmware в качестве виртуальной машины.Я обновляю сервер до Windows Server 2008 r2 64bit, и вместо того, чтобы делать его на месте, я просто создаю другой и параллельно работаю параллельно, и это свежая виртуальная машина с самого начала, никаких вещей p2v ....

Странно то, что я смог установить максимальный объем памяти в инструменте конфигурации tomcat9w.exe примерно на 1600 мегабайт, и это было ударом по стене в этой настройке (исходный физический, который я p2v'dдля виртуальной машины), я могу установить меньше оперативной памяти, но я не могу установить ее больше 1600, иначе, когда я пытаюсь запустить службу tomcat в services.msc, она просто обосралась.

Так что мое мышление было так как яВ любом случае, мне нужно оставаться на 32-битной версии Tomcat и 32-битной Java JVM (долгая история ...), чтобы было лучше разместить ее в 64-битной ОС (server 2008r2), а не в стандартной 32-битной версии server 2008Короче говоря, со свежей виртуальной машины, на этой коробке я могу установить максимальный общий оперативный памяти в Tomcatw только около 1000 м (1 ГБ), и если я установлю больше, он не запустится, так как я не могу получить службу Tomcatдля начала ... таким образом, стена составляет около 1 ГБ ...

В качестве теста я установил tomcat (zip extract, не используя msi или exe installer) на свой собственный клиентский компьютер с рабочей станцией, на котором установлена ​​последняя версия Windows 101809 и т. Д. И снова я ударился о стену объемом 1 ГБ и даже не могу довести ее до 1,6 ГБ, хотя у меня на ноутбуке 16 ГБ ОЗУ ...

Я уже давно гуглили, очевидно, это связано с тем, как сама операционная система (в данном случае Windows, будь то Windows Server 2008 STD, 2008 R2 или Win10 и т. д.) обрабатывает ограничения памяти для каждого процесса и выделения памяти потоков, которые по умолчанию позволяют только около 1,5 до2 г оперативной памяти на процесс, и это то, что ограничивает tvcat apache jvm, а не сами программы ....

Но если это действительно разница в ОС, я проверил на своем исходном 32-битном сервере server2008 std,тот, который я сделал P2V, и у него не было ничего специального набора в boot.ini или каких-либо параметров bcdedit, которые позволяют ему видеть больше оперативной памяти запроцесс или что-то вроде флага / 3GB и т. д. и т. д.

Единственное, о чем я могу подумать, это то, что, может быть, есть разница между виртуальной машиной и физическим необработанным ящиком в том, как она распределяет оперативную память, и чтоможет получить больше постоянной памяти, которая требуется tomcat / jvm при работе в 32-битной ОС на физическом компьютере, в отличие от 64-битной ОС в виртуальной машине?

Почему я могу получить точно такую ​​же версиюTomcat (одинаково) для обработки до 1600 м в 32-битной версии сервера 2008, но на сервере 2008r2 64-битный или даже сервер 2016-битный 64-битный Я могу заставить tomcat работать максимум до 1 ГБ?Они оба используют одну и ту же версию Java jvm и т. Д. И т. Д.

1 Ответ

0 голосов
/ 04 января 2019

См. https://www.oracle.com/technetwork/java/hotspotfaq-138619.html#gc_heap_32bit:

Почему я не могу получить большую кучу с 32-разрядной JVM?

Максимальный теоретический предел кучи для32-битная JVM - это 4G.Из-за различных дополнительных ограничений, таких как доступный обмен, использование адресного пространства ядра, фрагментация памяти и издержки на виртуальные машины, на практике этот предел может быть намного ниже.В большинстве современных 32-разрядных систем Windows максимальный размер кучи будет варьироваться от 1,4 ГГ до 1,6 ГБ.В 32-битных ядрах Solaris адресное пространство ограничено 2G.В 64-разрядных операционных системах, работающих под управлением 32-разрядной виртуальной машины, максимальный размер кучи может быть выше, приближаясь к 4G во многих системах Solaris.

Начиная с Java SE 6, функция boot.ini для Windows / 3GB не являетсяподдерживается.

Если вашему приложению требуется очень большая куча, вы должны использовать 64-разрядную виртуальную машину в версии операционной системы, которая поддерживает 64-разрядные приложения.Для получения подробной информации см. Поддерживаемые конфигурации системы Java SE.

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