Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 24728|Odpowiedź: 1

[Źródło] Nie udało się zarezerwować wystarczająco miejsca na 2097152KB ster obiektów

[Skopiuj link]
Opublikowano 24.07.2017 10:43:36 | | | |
Błąd: Nie udało się zarezerwować wystarczającej ilości miejsca na 2097152KB stos obiektów

Uruchomiłem activemq i zgłosiłem błąd spowodowany zbyt dużą alokacją, więc przy alokacji pamięci MQTT trzeba go określić, łącząc rozmiar pamięci serwera (użyj free -g) i czy JDK obsługuje ten rozmiar.

Ustawienia parametrów JVM

Główne parametry:
-Xms: Początkowy rozmiar pamięci
-Xmx: Maksymalny rozmiar pamięci
-XMN: Młodsze pokolenie

Użyj polecenia Java -Xmx2047M -version, aby sprawdzić, czy spełnia wymagania:


Rozwiązanie:

Start - > Panel sterowania - > System - > Zaawansowane ustawienia - > Zmienne środowiskowe - > Zmienne systemowe

Nowa zmienna:
Nazwa zmiennej: _JAVA_OPTIONS   
Wartość zmiennej: -Xmx1G






Poprzedni:MySQL zapytuje tabelę bez pustej liczby rekordów
Następny:Różnica między serwerem a klientem maszyny wirtualnej Javy JVM
 Ziemianin| Opublikowano 24.07.2017 10:45:37 |
Ostatnio pracuję nad programem do Javy. Początkowo zawsze podobało mi się zarządzanie pamięcią w Javie, nie musisz się martwić o alokację pamięci, wystarczy alokować, garbage collector odzyska pamięć za ciebie. Program jest teraz opracowany z dużą ilością danych, a dla szybkości zamierzam załadować wszystkie informacje do pamięci, co zapewni szybką odpowiedź. Wciąż wielokrotnie liczę pamięć, myśląc o własnej ilości danych, co powinno wystarczyć na początku (mój komputer ma pamięć 4G, chociaż Windows rozpoznaje 3,5G, ale powinno być dobrze w porównaniu do obecnej ilości danych).

Niespodziewanie program pierwszego eksperymentu trwał kilka godzin i napotkał Wyjątek Out of Memory. Patrząc na ustawienia mojej maszyny wirtualnej, ustawiłem -Xms512M -Xmx1024M. Bez zastanowienia od razu zmieniłem to na -Xms512M -Xmx2048M, a w efekcie nie mogłem zarezerwować wystarczająco dużo miejsca na ster obiektów. Program nie może wstać. Dopiero wtedy zorientowałem się, że wciąż istnieje limit oryginalnej maksymalnej pamięci. Przeszukałem Internet i znalazłem wiele artykułów poruszających ten temat. Na koniec znalazłem najbardziej przydatny artykuł na forum DEV2DEV BEA

Tutaj moderator YuLimin przeprowadził test i doszedł do wniosku:

Wersja firmowa JVM Klient z maksymalną liczbą pamięci (mega) Serwer z maksymalną liczbą pamięci (mega)

NIEDZIELA 1.5.x 1492 1520

SUN 1.5.5(Linux) 2634 2660

NIEDZIELA 1.4.2 1564 1564

SUN 1.4.2(Linux) 1900 1260

IBM 1.4.2(Linux) 2047 N/A

BEA JRockit 1.5 (U3) 1909 1902

Używam teraz JDK1.6.0_05, testowałem. Największym problemem w stanie klienta jest to, że mój JDK nie rozpoznaje parametru -Server i nie może przetestować stanu serwera. Szacunki są mniej więcej takie same.

NIEDZIELA 1.6.0 1442 N/a

Wydaje się, że w Javie niemożliwe jest użycie dużej pamięci. A ogólne powiedzenie głosi, że jeśli pamięć jest zbyt duża, czas zbierania śmieci będzie długi. To również zrozumiałe, zazwyczaj zbierane wtedy, gdy pamięć jest za mała, skanowanie pamięci 2G jest oczywiście znacznie wolniejsze niż 1G, a obiektów pamięci jest więcej, a szacowana zależność rośnie wykładniczo.

Poniżej załączono metody testowe i rekordy testowe YuLimin.

Metoda testowa: Użyj polecenia java -XmxXXXXM -version -version, aby przetestować w wierszu poleceń, a następnie stopniowo zwiększać wartość XXXX; jeśli działa normalnie, oznacza to, że dostępny jest określony rozmiar pamięci, w przeciwnym razie zostanie wydrukowany komunikat o błędzie.
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com