Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Запуск Java на слабеньком компьютере


Автор: DOKA 18.12.2007, 17:02
Доброго времени суток!

Имеется слабенькая машина (Virtual Private Server), у которой есть гарантированно есть всего 64Mb памяти, но, как правило её бывает до 190Mb.

Из-за недостатка памяти Java незапускается никак:

Код

host# java
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.


Пробовал делать 

Код

export _JAVA_OPTIONS='-Xms30m -Xmx100m'


Не помогает :(

Что можете предложить?
Запускать буду Tomcat с наипростейшим сервлетом.

Автор: Dims 18.12.2007, 19:02
А вдруг опции не сработали? Попробуйте в качестве теста прямо из командной строки что-нибудь запустить.

Автор: LSD 19.12.2007, 13:48
А почему _JAVA_OPTIONS? Судя по http://wiki.apache.org/tomcat/FAQ/Memory надо использовать JAVA_OPTS.

Автор: DOKA 19.12.2007, 13:49
Цитата(Dims @ 18.12.2007,  19:02)
А вдруг опции не сработали? Попробуйте в качестве теста прямо из командной строки что-нибудь запустить.

Получилось только запустить с опциями "-Xms8m -Xmx16m". И Tomcat стартует, но при попытке обратиться по http://host:8080/ Java сразу хапает кучу виртуальной памяти (например 270 M [на тот момент доступно было 300]) и даньнейшие последствия:

- в броузере ничего не грузится
- загрузка ЦП 100% некоторое время
- при попытке запустить что либо ещё, программы сразу падают из-за недостатка памяти.

Почему Java жрет так много, даже если ей это не надо? Как жестко умерить её аппетит?

Добавлено через 1 минуту и 52 секунды
Цитата(LSD @ 19.12.2007,  13:48)
А почему _JAVA_OPTIONS? Судя по http://wiki.apache.org/tomcat/FAQ/Memory надо использовать JAVA_OPTS.

Везде написано по разному... У меня как раз JAVA_OPTS не прошло, а при указании _JAVA_OPTIONS, java при запуске пишет что подхватила их.

В любом случае, я запусая и вводя параметры в строку запуска (java -Xsx...) - результат тот же.

Автор: LSD 19.12.2007, 13:51
Цитата(DOKA @  19.12.2007,  13:49 Найти цитируемый пост)
И Tomcat стартует, но при попытке обратиться по http://host:8080/ Java сразу хапает кучу виртуальной памяти (например 270 M [на тот момент доступно было 300]) и даньнейшие последствия:

Каким это образом если ты указал максимум в 16 мегабайт?

Автор: DOKA 19.12.2007, 14:28
Вот этого я и не могу понять. Вот что выдает `top` по процессу java до запуска сервлета:

Код

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
28019 tomcat55  18   0 48244  25m  15m D  4.1  9.0   0:00.43 java



вот при попытке доступа по 8080 порту
Код

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
28019 tomcat55  19   0  280m  44m  16m R 16.9 15.5   0:05.58 java


:(

Автор: LSD 19.12.2007, 15:03
В своем сервлете выведи на страничку что выдаст 
Код

Runtime.getRuntime().totalMemory()

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)