Przede wszystkim mam pudełko z 8 GB pamięci RAM, więc wątpię, czy problemem jest całkowita pamięć. Ta aplikacja działa poprawnie na komputerach o pojemności 6 GB lub mniejszej.
Próbuję zarezerwować 3 GB miejsca za pomocą -Xmx3G w sekcji „VM Arguments” w Run Configurations w Eclipse.
Za każdym razem, gdy próbuję zarezerwować więcej niż 1500 MB, pojawia się ten błąd: „Wystąpił błąd podczas inicjowania maszyny wirtualnej; Nie można zarezerwować wystarczającej ilości miejsca na stertę obiektów ”przy użyciu -Xmx3G
Co tu się dzieje?
java
eclipse
jvm
jvm-arguments
user1212731
źródło
źródło
Odpowiedzi:
Czy to możliwe, że używasz 32-bitowego jvm na tym komputerze?
źródło
Oto jak to naprawić: Przejdź do
Start->Control Panel->System->Advanced(tab)->Environment Variables->System
Zmień to na odpowiednią ścieżkę .
źródło
W rzeczywistości nie jest to kwestia specyficzna dla Eclipse; jest to ogólny problem dotyczący środowiska Java w systemie Windows. Dzieje się tak z powodu sposobu, w jaki JVM przydziela pamięć w systemie Windows; nalega na przydzielenie ciągłej porcji pamięci, której system Windows często nie może zapewnić, nawet jeśli jest wystarczająco dużo oddzielnych porcji, aby spełnić żądanie alokacji. Istnieją narzędzia, które będą próbowały pomóc systemowi Windows „defragmentować” pamięć, co teoretycznie pomogłoby w tej sytuacji; ale tak naprawdę nie wypróbowałem ich na poważnie, więc nie mogę mówić o ich skuteczności. Słyszałem czasem, że może pomóc zrestartować system Windows i przed uruchomieniem innych aplikacji uruchomić aplikację Java, która wymaga dużej ilości pamięci. Jeśli masz szczęście, system Windows nie podzielił jeszcze przestrzeni pamięci, a Java otrzyma ciągły blok, o który prosi.
Gdzieś w interwebach jest więcej technicznych wyjaśnień i analiz tego problemu, ale nie mam pod ręką żadnych odniesień.
Jednak znalazłem to, co wygląda na pomocne: https://stackoverflow.com/a/497757/639520
źródło
Po pierwsze, 32-bitowe środowisko JRE nie może zużywać więcej ~ 1,5 Gb pamięci RAM. Więc jeśli chcesz więcej, użyj 64-bitowego środowiska JRE.
Po drugie, podczas uruchamiania nowej maszyny JVM sumuje się właściwość -Xmx wszystkich uruchomionych maszyn JVM i sprawdza, czy w systemie jest wystarczająco dużo pamięci, aby można było uruchomić ich własną maszynę -Xmx. Jeśli to nie wystarczy, wystąpi błąd.
źródło
Używałem Liferay z serwerem Tomcat z eclipse IDE. Utknąłem z tym samym błędem podczas uruchamiania serwera po kliknięciu. Kliknij dwukrotnie serwer z eclipse. otwiera stronę Przegląd serwera. Zaktualizowano argumenty pamięci z -Xmx1024m -XX: MaxPermSize = 256m do -Xmx512m -XX: MaxPermSize = 256m. Wtedy to działało dla mnie.
źródło
Upewnij się, że Eclipse faktycznie uruchamia tę samą maszynę JVM, o której myślisz, że działa. Jeśli kiedykolwiek korzystasz z języka Java w przeglądarce internetowej, prawdopodobnie masz też wersję 32-bitową, która może mieć pierwszeństwo, jeśli została ostatnio zainstalowana lub zaktualizowana.
Aby mieć absolutną pewność, zalecamy dodanie tych dwóch wierszy do
eclipse.ini
pliku u góry:-vm C:/Java/jdk1.6.0_27/bin
... gdzie na moim komputerze
C:/Java/jdk1.6.0_27/bin
znajduje się 64-bitowa maszyna JVM, którą znam. Upewnij się, że maszbin
tam folder.(Jako bonus, w systemie Windows 7 umożliwia to również „przypięcie karty”, dlatego musiałem to zrobić na własny użytek)
źródło
eclipse.ini
stronie: wiki.eclipse.org/…To jest kwestia rozmiaru sterty. Edytuj swój
.bat
(plik wsadowy). Może pokazywać rozmiar sterty 1024. Zmień go na 512 Wtedy powinno działać.źródło
Miałem również ten sam problem podczas korzystania z Eclipse, który był 32-bitowy, a używana przez niego JVM była 64-bitowa. Kiedy przekierowałem Eclipse do 32-bitowej maszyny JVM, zadziałało
źródło
Po prostu umieść
#
symbol przed parametremorg.gradle.jvmargs=-Xmx1536m
gradle.propertiesźródło
Wiem, że jestem trochę spóźniony, ale oto moja odpowiedź:
Właśnie zainstalowałem wersję online Java z Oracle (nie wersję offline 64-bitową).
Po dodaniu zmiennej JAVA_HOME ENV po prostu działało!
Mam nadzieję, że mógłbym pomóc :)
źródło
Prawdopodobnie i tak próbujesz złych opcji. Otrzymałem podobny błąd z obsługą dziennika błędów:
Java HotSpot(TM) Client VM warning: ignoring option PermSize=32M; support was removed in 8.0 Java HotSpot(TM) Client VM warning: ignoring option MaxPermSize=128M; support was removed in 8.0
W moim przypadku oprogramowanie nie obsługiwało jeszcze javy 8 (skrypt korzystał ze starych argumentów JVM), ale ja domyślnie miałem java 8.
źródło
Jednym z powodów tego problemu jest brak pamięci dostępnej do uruchomienia Tomcata. Spróbuj usunąć niechciane działające oprogramowanie z systemu Windows i uruchom ponownie zaćmienie i tomcat.
źródło