Za każdym razem, gdy próbuję uruchomić program, otrzymuję następujący wyjątek.
Wystąpił błąd podczas inicjowania maszyny wirtualnej
Nie można zarezerwować wystarczającej ilości miejsca na stertę obiektu
Nie można utworzyć wirtualnej maszyny Java.
Próbowałem zwiększyć swoją pamięć wirtualną (rozmiar strony) i rozmiar pamięci RAM, ale bezskutecznie.
Jak mogę wyeliminować ten błąd?
Odpowiedzi:
Uruchom JVM z
-XX:MaxHeapSize=512m
(lub dowolną dużą liczbą, jak potrzebujesz) (lub-Xmx512m
w skrócie)źródło
Może to być również spowodowane ustawieniem czegoś zbyt dużego w 32-bitowej HotSpot vm, na przykład:
gdzie to może / mogłoby działać:
źródło
oto jak to naprawić:
Przejdź do Start-> Panel sterowania-> System-> Zaawansowane (zakładka) -> Zmienne środowiskowe-> System
Zmienne-> Nowe: Nazwa
_JAVA_OPTIONS
zmiennej: Wartość-Xmx512M
zmiennej: NazwaPath
zmiennej: Wartość zmiennej:
%PATH%;C:\Program Files\Java\jre6\bin;F:\JDK\bin;
Zmień to na odpowiednią ścieżkę.
źródło
Natknąłem się na to podczas korzystania z javaca i wydaje się, że nie wykrywa to opcji wiersza poleceń,
więc rozwiązanie tutaj ustawia więc _JAVA_OPTIONS
I to dobrze się kompiluje.
Zdarza mi się to na komputerach z dużą ilością pamięci RAM, ale z niższymi limitami pamięci. Java decyduje się przydzielić dużą stertę, ponieważ wykrywa pamięć RAM w maszynie, ale nie może jej przydzielić z powodu ulimits.
źródło
32-bitowa Java wymaga ciągłego wolnego miejsca w pamięci do uruchomienia. Jeśli określisz duży rozmiar sterty, może nie być tak dużo ciągłego wolnego miejsca w pamięci, nawet jeśli masz dużo więcej wolnego miejsca niż to konieczne.
Zainstalowanie 64-bitowej wersji Java pomaga w takich przypadkach, ciągłe wymagania dotyczące pamięci dotyczą tylko 32-bitowej Java.
źródło
W połączeniu z -Xmx512M użyj -d64, aby upewnić się, że używasz 64-bitowej maszyny wirtualnej. Na maszynie 64-bitowej na pewno myślałem, że mam 64-bitową maszynę wirtualną, ale nie. Po zainstalowaniu 64-bitowej Java opcja -d64 działa, a -Xmx pozwala na znacznie większe rozmiary pamięci.
źródło
Otrzymałem ten sam błąd i rozwiązałem go, konfigurując go w pliku run.conf.bat
Uruchom JVM z konfigurującym run.conf.bat w Jboss5x
Jeśli wolna pamięć nie jest dostępna, gdy przekazujesz instrukcję, wprowadź zmiany w pliku run.conf.bat
źródło
Wiem, że jest tu już wiele odpowiedzi, ale żadna z nich mi nie pomogła. Na koniec otworzyłem plik
/etc/elasticsearch/jvm.options
i zmieniłem:do
To dla mnie rozwiązało. Mam nadzieję, że pomoże to komuś innemu tutaj.
źródło
Miałem podobne problemy. Zainstalowałem 32-bitową wersję Java na komputerze 64-bitowym.
Odinstalowując tę wersję i instalując 64-bitową wersję Java. Byłem w stanie rozwiązać problem.
źródło
Załóżmy, że twoja klasa jest wywoływana
Test
w pakieciemypackage
. Uruchom swój kod w następujący sposób:To zarezerwuje 1024 MB miejsca na stosie dla twojego kodu. Jeśli chcesz 512 MB, możesz użyć:
Użyj trochę mw
1024m
,512m
itpźródło
Czasami ten błąd wskazuje, że pamięć fizyczna i zamiana na serwerze są w pełni wykorzystywane!
Ostatnio widziałem ten problem na serwerze z RedHat Enterprise Linux 5.7 z 48 GB pamięci RAM. Przekonałem się, że nawet po prostu biegam
spowodował ten sam błąd, który ustalił, że problem nie był specyficzny dla mojej aplikacji.
Bieganie
poinformował, że zarówno MemFree, jak i SwapFree były znacznie poniżej 1% wartości odpowiednio MemTotal i SwapTotal:
Zatrzymanie kilku innych działających aplikacji na maszynie nieco podniosło liczbę wolnej pamięci:
W tym momencie nowa instancja Java mogłaby się uruchomić poprawnie i mogłem uruchomić moją aplikację.
(Oczywiście dla mnie było to tylko rozwiązanie tymczasowe; nadal mam wyjątkowe zadanie dokładniejszego zbadania procesów uruchomionych na tym komputerze, aby sprawdzić, czy można coś zrobić, aby zmniejszyć nominalne poziomy wykorzystania pamięci bez konieczność uciekania się od aplikacji).
źródło
java -version
zawodzi, mimo że top pokazał jeszcze trochę wolnego: | (powiedział także, że wystąpił błąd podczas inicjowania VM Nie można czasem zarezerwować wystarczającej ilości miejsca na tablicę do oznaczania kart). Wydawało się, że poprawką jest uruchamianie na górze, sprawdzanie, które procesy wykorzystują najwięcej pamięci RAM (kolumna VIRT), zabijanie ich [dla mnie postgres, appdynamics]: |Błąd:
Z powodu błędu „wystąpił błąd podczas inicjowania vm, nie można zarezerwować wystarczającej ilości miejsca dla jboss sterty obiektów”
Przyczyna główna:
Nieprawidłowy / niewystarczający przydział pamięci dla naszej maszyny JVM, jak wspomniano poniżej.
np. JAVA_OPTS = "- Xms1303m -Xmx1303m -XX: MaxPermSize = 256m" w jboss-eap-6.2 \ bin \ standalone.conf lub "JAVA_OPTS = -Xms1G -Xmx1G -XX: MaxPermSize = 256M" w jboss-eap-6.2 \ bin \ standalone.conf.bat, który jest niczym innym jak parametrami puli alokacji pamięci JVM.
Rozdzielczość:
Zwykle nie zaleca się, aby mieć ten sam rozmiar dla min i maks.
Jeśli uruchamiasz aplikację w środowisku Eclipse,
źródło
java -Xgcprio:throughput -Xmx:64m -Xms:64m myApp
”Ostatnio napotkałem ten problem. Mam 3 aplikacje Java, które zaczynają się z wielkością sterty 1024m lub 1280m. Java szuka dostępnej przestrzeni w swapie, a jeśli nie ma wystarczającej ilości pamięci, jvm kończy działanie.
Aby rozwiązać ten problem, musiałem zakończyć kilka programów z przydzieloną dużą ilością pamięci wirtualnej.
Pracowałem na Linuksie x86-64 z 64-bitowym jvm.
źródło
Miałem odpowiednią ilość ustawień pamięci, ale dla mnie korzystałem z 64-bitowego intellij z 32-bitowym jvm. Po przejściu na 64-bitową maszynę wirtualną błąd zniknął.
źródło
Zakładając, że masz wystarczającą ilość wolnej pamięci i poprawnie skonfigurowałeś argumenty JVM, możesz mieć problem z fragmentacją pamięci. Sprawdź maksymalną pamięć Java w systemie Windows XP .
źródło
Jeśli używasz 32-bitowej maszyny JVM, zmiana wielkości sterty na mniejszą byłaby prawdopodobnie pomocna. Możesz to zrobić, przekazując argumenty do java bezpośrednio lub poprzez zmienne środowiskowe, takie jak następujące,
W przypadku 64-bitowej maszyny JVM większy rozmiar sterty, taki jak
-Xms512M -Xmx1536M
powinien działać .Uruchom
java -version
lubjava -d32
,java--d64
aby Java7 sprawdził, którą wersję uruchomisz.źródło
W każdym razie, oto jak to naprawić: Przejdź do Start-> Panel sterowania-> System-> Zaawansowane (zakładka) -> Zmienne środowiskowe-> Zmienne systemowe-> Nowe: Nazwa zmiennej: _JAVA_OPTIONS Wartość zmiennej: -Xmx512M
LUB
Zmień połączenie mrówki, jak pokazano poniżej.
To zadziałało dla mnie.
źródło
Wystąpił błąd podczas inicjowania maszyny wirtualnej. Nie można zarezerwować wystarczającej ilości miejsca na stertę obiektów 1572864 KB
Zmieniłem wartość pamięci w pliku settings.grade 1536 na 512 i to pomogło
źródło
Przejdź do Start-> Panel sterowania-> System-> Zaawansowane (zakładka) -> Zmienne środowiskowe-> Zmienne systemowe-> Nowość:
źródło
W przypadku uruchamiania programu Java: - uruchom swój program w terminalu, używając poprawnego polecenia dla systemu Linux, będzie to „java -jar myprogram.jar” i dodaj -Xms256m -Xmx512m, na przykład: „java -jar myprogram.jar Xms256m -Xmx512m ”
Jeśli używasz skryptu .sh (Linux, Mac?) Lub .bat (Windows), otwórz skrypt i poszukaj opcji Java, jeśli są obecne i zwiększ pamięć.
Jeśli wszystkie powyższe nie działają, sprawdź swoje procesy (ctrl + alt + delete w Windows) (ps aux na linux / mac) i zabij procesy, które wykorzystują dużo pamięci i nie są konieczne dla twojego systemu operacyjnego! => Spróbuj ponownie uruchomić program.
źródło
W CASSANDRA_HOME / bin / cassandra.bat znajdziesz następującą konfigurację
Możesz zmniejszyć 2G do mniejszej liczby, np. 1G lub nawet mniejszej, i powinno to działać.
To samo, jeśli pracujesz na systemie unix, odpowiednio zmień plik .sh.
źródło
Wystąpił ten sam błąd i został rozwiązany, gdy usunąłem pliki tymczasowe za pomocą% temp% i ponownie uruchomiłem zaćmienie.
źródło
Czasami odnosi się to do
Jeśli ustawisz na:
To powinno działać.
źródło
Wymień
-Xmx2G
się-Xms512M
lub jakikolwiek większy rozmiar pamięci w pliku cassandra.bat w katalogu bin Cassandra.źródło
Otwórz plik gradle.properties w folderze Androida.
Zamień ten wiersz:
z:
Objaśnienie: Maksymalny limit z dokumentu Gradle:
Jeśli żądane środowisko kompilacji nie określa maksymalnego rozmiaru sterty, demon zużyje do 512 MB sterty.
źródło
Nie musisz nic robić po prostu zmieniając plik POM jak poniżej
źródło