Поправка: Дошло је до грешке током иницијализације ВМ-а, није могао резервисати довољно простора за гомилу објеката



Испробајте Наш Инструмент За Елиминисање Проблема

Иако Јава аплети данас нису популарна веб технологија, постоји безброј разлога за постављање Јава виртуелне машине директно на Линук сервер. Ако покушате изравно покренути Линук јава наредбу било на дискретном хардверу или унутар сопственог ВМ-а, можда ћете добити поруку „дошло је до грешке током иницијализације ВМ-а, није могао резервисати довољно простора за гомилу објеката“.



Ово вероватно изгледа прилично чудно јер више него вероватно имате довољно РАМ-а за покретање команде, али је то углавном због специфичне наказе у начину на који се физичке и странице виртуелне меморије користе. Навођење неких релативно великих величина требало би да вам омогући да потпуно заобиђете ову поруку и покренете јава наредбу на начин на који бисте то учинили.



1. метод: Коришћење опција командне линије

Ако сте покушали да покренете јаву и добили сте ову поруку, онда сте вероватно већ покренули бесплатну команду да бисте се уверили да има довољно меморије за покретање програма.



Јава и бесплатне команде

Приметите да смо на нашој тест машини имали око 2,3 ГБ физичке РАМ меморије и да се још увек није искористила ниједна страница виртуелне меморије. Ако приметите да имате грешку у меморији, желећете да затворите друге ствари које сте покренули пре него што поново покушате. С друге стране, они који су открили да имају довољно слободне меморије могу покушати да директно одреде величину.

На пример, на нашој машини смо могли да покренемо команду као јава -Ксмс256м -Ксмк512М и радила је као што би се иначе очекивало. Ово ограничава величину гомиле коју Јава виртуелна машина покушава резервисати приликом покретања. Будући да необуздана виртуелна машина хипотетички може да ради необичне ствари, могла би да шаље поруке о грешкама на иначе бесплатан систем. Можда ћете желети и да се поиграте са те две вредности пре него што пронађете праву комбинацију.



Ово може бити проблем без обзира на чему га покрећете, јер ЈВМ нема никакве везе са типом ВМ-а који можда користите за покретање ГНУ / Линук-а.

2. метод: Извоз променљивих да би промена била трајна

Када пронађете вредност која функционише, можете је извести да би постала трајна за ту сесију. На пример, користили смо извоз _ЈАВА_ОПТИОНС = ’- Ксмс256М -Ксмк512М’ из басх командне линије и то нам је омогућило да сами покренемо јава команду без икаквих других опција док се не одјавимо са сервера.

Било је потребно да се поново покрене када смо се пријавили у другу сесију, па ћете је можда можда желети додати било којој релевантној покретачкој скрипти ако планирате да користите јава команду прилично често. Додали смо ред у нашу .басх_логин датотеку и чинило се да ради сваки пут када смо користили упит за пријаву без потребе да га поново покренемо, мада ћете можда морати да пронађете другу локацију за њега ако радите са другом љуском.

Можда сте приметили да само одређене конфигурације хардвера покрећу ову поруку о грешци. То је зато што се то обично дешава на машинама са великом количином физичке РАМ меморије, али са нижим ограничењима како се користи. Јава ће покушати да додели огроман блок само да би јој се рекло да не може, што тумачи као понестајање меморије.

3. метод: Штампање тренутних Јава опција

Ако сте радили у командној линији и желите брзу референцу на оно на шта сте тренутно поставили вредност _ЈАВА_ОПТИОНС, онда једноставно покрените ецхо $ _ЈАВА_ОПТИОНС и он ће одмах одштампати тренутне вредности. Ово је корисно за решавање проблема када покушавате да откријете праве бројеве за покушај.

Имајте на уму да, иако ово исправљање не би требало да захтева било какво друго играње, Јава ће избацити поруку „нисам могао резервисати довољно простора за хрпу предмета“ ако се икада искрено нађете на кратком крају виртуелне меморије. Ако је то случај, поново ћете проверити који су процеси тренутно покренути и можда поново покренути сервер ако је то опција. Можете и да направите више простора за замену, али ако је ово проблем, обично је боље покушати да га исправите на неки други начин.

У ретким случајевима када се чини да су ваша подешавања исправна, али и даље не функционишу, уверите се да сте инсталирали 64-битни Јава пакет јер би требало да буде имун на овај проблем. Непрекидни захтеви за меморијом важе само за 32-битну верзију Јаве. Пронашли смо у неколико случајева да је 64-битна верзија покушала да створи 32-битну виртуелну машину, па нас је поправак опције -д64 у командној линији поправио.

3 минута читања