2012-03-19 13 views
9

Mój system to mennica 12 64bit.Playframework - IOException nie może przydzielić pamięci

Zainstalowałem stos typów niebezpiecznych i utworzyłem nową aplikację do grania. Bez modyfikacji kodu próbowałem go uruchomić. Jest to wyjście:

http://pastebin.com/6XwmsbAE

play narzeka z tym komunikatem o błędzie:

IOException: Cannot run program "javac": java.io.IOException: error=12, Cannot allocate memory 

Jak mogę rozwiązać ten problem?

UPDATE:

@Mef

Ok były zdecydowanie rację. Zwiększyłem początkową pamięć RAM z 1 GB do 2 GB (uruchamiam to na Virtualbox). Kompilacja działała dokładnie raz.

Niestety java podjęła decyzję, że nawet 2 GB to za mało: uruchamianie Zaćmienia i Firefoxa używa 1 GB. Następnie uruchamiam sbt i zużycie pamięci wzrasta do około 1,2 GB. Ktoś mógłby pomyśleć, że to wystarczy. Nie jest. Kompilacja kończy się niepowodzeniem z tym samym błędem, chociaż 800 MB jest nadal dostępne. Co więcej, po próbie kompilacji aplikacji wykorzystanie pamięci wzrasta do 1,6 GB. Co dziwne, nawet podczas kompilacji projektu nigdy nie osiąga 2 GB, ale osiąga maksimum 1,8 GB.

Mimo to spróbowałem ponownie i przekazałem 3 gigabajty pamięci RAM na maszynę wirtualną. Teraz kompilacja i uruchomienie aplikacji działa dobrze. Jako kolejny cud z 3 GB dostępnego wykorzystania pamięci nigdy nie wzrasta powyżej 1,6 GB i pozostaje znacznie poniżej maksymalnej 1,8 GB, które widziałem w iteracji 2 GB.

+2

najprawdopodobniej naprawdę zabrakło pamięci. Nie sądzę, że to gra związana ... – Leo

+0

Mam 1 GB pamięci RAM. Zdziwiłbym się, gdyby to był problem, ale ponieważ używam wirtualnej skrzynki, mogę z łatwością zwiększyć pamięć. Znowu zaktualizuję pytanie po tym, jak spróbowałem ponownie. – lhk

+0

Miałeś rację. 1 GB to za mało.Próbowałem ponownie z 2 GB i wszystko działało dobrze – lhk

Odpowiedz

3

Ponieważ jest to ogólny błąd javac, wątpię, aby był powiązany z Play. Najprawdopodobniej zabrakło Ci pamięci.

17

W rzeczywistości nie jest to całkowicie błąd systemowy: modyfikowanie plików konfiguracyjnych gry pozwala na pracę w systemie z mniej niż 1 GB pamięci.

W play-2.0.4/framework/build (lub build.bat), wystarczy zmienić

java ${DEBUG_PARAM} -Xms512M -Xmx1536M ... 

do

java ${DEBUG_PARAM} -Xms128M -Xmx512M ... 

Teraz nie mogą być inne problemy z systemem gry z mniejszą ilością pamięci, ale przynajmniej podstawowe prace instalacyjne .

+0

+1 za wspaniałą odpowiedź. Już przeniosłem się i pracuję nad innym projektem, ale jestem pewien, że może to pomóc innym programistom. – lhk

+1

To rozwiązało mój problem na serwerze VPS! –

+1

Używam 'java_opts =" - Xms128M -Xmx512M "./Activator' do tego samego efektu, kilka lat później. –

Powiązane problemy