Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 24728|Răspunde: 1

[Sursă] Nu am putut rezerva suficient spațiu pentru un object heap de 2097152KB

[Copiază linkul]
Postat pe 24.07.2017 10:43:36 | | | |
Eroare: Nu am putut rezerva suficient spațiu pentru heap de obiecte de 2097152KB

Am pornit activemq și am raportat o eroare, cauzată de alocarea prea mare, așa că atunci când aloci memorie MQTT, trebuie determinată combinând dimensiunea memoriei serverului (folosește free -g) și dacă JDK suportă dimensiunea memoriei.

Setări ale parametrilor JVM

Parametri principali:
-Xms: Dimensiunea inițială a memoriei
-Xmx: Dimensiunea maximă a memoriei
-Xmn: Dimensiunea generației mai tinere

Folosește comanda Java -Xmx2047M -version pentru a vedea dacă se conformează:


Soluție:

Start - > Panoul de control - > Sistem - > Setări avansate - > Variabile de mediu - > Variabile de sistem

Variabilă nouă:
Nume variabilă: _JAVA_OPTIONS   
Valoare variabilă: -Xmx1G






Precedent:MySQL interoghează un tabel fără un număr gol de înregistrări
Următor:Diferența dintre server și client în JVM-ul mașinii virtuale Java
 Proprietarul| Postat pe 24.07.2017 10:45:37 |
Recent lucrez la un program pentru Java. Inițial, mi-a plăcut mereu gestionarea memoriei în Java, nu trebuie să-ți faci griji pentru alocarea memoriei, doar alocă, iar garbage-collector-ul va recupera memoria pentru tine. Acum programul este dezvoltat cu o cantitate mare de date, iar pentru viteză, voi încărca toate informațiile în memorie, ceea ce va asigura un răspuns rapid. Încă număr memoria în mod repetat, gândindu-mă la cantitatea mea de date, care ar trebui să fie suficientă la început (calculatorul meu are memorie 4G, deși Windows recunoaște 3,5G, dar ar trebui să fie în regulă comparativ cu volumul meu actual de date).

În mod neașteptat, programul primului experiment a rulat câteva ore și a întâlnit o Excepție Fără Memorie. Uitându-mă la setările mele VM, am setat -Xms512M -Xmx1024M. Fără să mă gândesc, am schimbat-o direct în -Xms512M -Xmx2048M, iar rezultatul a fost că nu am putut rezerva suficient spațiu pentru object heap. Programul nu se poate ridica. Abia atunci mi-am dat seama că încă exista o limită a memoriei maxime originale. Am căutat pe Internet și am găsit multe articole care discutau această problemă. În final, am găsit cel mai util articol pe forumul DEV2DEV al BEA

Aici moderatorul YuLimin a făcut testul și a ajuns la concluzia:

Versiunea JVM companiei Client cu memorie maximă (mega) Server cu memorie maximă (mega)

DUM 1.5.x 1492 1520

SUN 1.5.5 (Linux) 2634 2660

DUM 1.4.2 1564 1564

DUM 1.4.2 (Linux) 1900 1260

IBM 1.4.2(Linux) 2047 N/A

BEA JRockit 1.5 (U3) 1909 1902

Acum folosesc JDK1.6.0_05, am testat-o. Cel mai important lucru în starea clientului este că JDK-ul meu nu recunoaște parametrul -Server și nu poate testa starea serverului. Estimările sunt cam aceleași.

DUM 1.6.0 1442 N/d

Se pare că este imposibil să folosești o memorie mare în Java. Și zicala generală este că dacă memoria este prea mare, timpul de colectare a gunoiului va fi lung. Acest lucru este de înțeles, de obicei colectat când memoria nu este suficientă, scanarea memoriei 2G este, desigur, mult mai lentă decât 1G și există mai multe obiecte de memorie, relația estimată crește exponențial.

Mai jos sunt atașate metodele de testare și înregistrările de testare ale lui YuLimin.

Metoda de testare: Folosiți comanda java -XmxXXXXM -version pentru a testa pe linia de comandă, apoi creșteți treptat valoarea XXXX; dacă rulează normal, înseamnă că dimensiunea specificată a memoriei este disponibilă, altfel va fi tipărit un mesaj de eroare.
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com