Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 24728|Antwoord: 1

[Bron] Kon niet genoeg ruimte reserveren voor een 2097152KB objectheap

[Link kopiëren]
Geplaatst op 24-07-2017 10:43:36 | | | |
Fout: Niet genoeg ruimte kunnen reserveren voor een object heap van 2097152KB

Ik startte activemq en rapporteerde een foutmelding, veroorzaakt door te veel allocatie, dus bij het allocaties van MQTT-geheugen moet dit worden bepaald door de servergeheugengrootte te combineren (gebruik free -g) en of JDK de geheugengrootte ondersteunt.

JVM-parameterinstellingen

Belangrijkste parameters:
-Xms: Initiële geheugengrootte
-Xmx: Maximale geheugengrootte
-Xmn: Jongere generatie grootte

Gebruik het Java-commando -Xmx2047M -version om te zien of het voldoet:


Oplossing:

Start - > Configuratiescherm - > Systeem - > Geavanceerde instellingen - > Omgevingsvariabelen - > Systeemvariabelen

Nieuwe variabele:
Variabele naam: _JAVA_OPTIONS   
Variabele waarde: -Xmx1G






Vorig:MySQL doet querys in een tabel zonder een leeg aantal records
Volgend:Het verschil tussen server en client van Java's virtuele machine JVM
 Huisbaas| Geplaatst op 24-07-2017 10:45:37 |
Onlangs werk ik aan een programma voor Java. Oorspronkelijk vond ik Java's geheugenbeheer altijd prettig, je hoeft je geen zorgen te maken over het toewijzen van geheugen, gewoon toewijzen, de garbage collector zal het geheugen voor je terugwinnen. Nu is het programma ontwikkeld met een grote hoeveelheid data, en voor het tempo ga ik alle informatie in het geheugen laden, wat zorgt voor een snelle reactie. Ik tel nog steeds herhaaldelijk het geheugen, denk aan mijn eigen datavolume, wat in het begin voldoende zou moeten zijn (mijn machine heeft 4G-geheugen, hoewel Windows 3,5G herkent, maar dat zou prima moeten zijn vergeleken met mijn huidige datavolume).

Onverwacht liep het programma van het eerste experiment enkele uren en kwam een Out of Memory Exception tegen. Als ik naar mijn eigen VM-instellingen kijk, stel ik -Xms512M -Xmx1024M in. Zonder erover na te denken heb ik het direct veranderd naar -Xms512M -Xmx2048M, en het resultaat was dat ik niet genoeg ruimte kon reserveren voor object heap. Het programma kan niet opstaan. Pas toen realiseerde ik me dat er nog steeds een limiet was aan het oorspronkelijke maximale geheugen. Ik heb op internet gezocht en veel artikelen gevonden die dit onderwerp bespreken. Uiteindelijk vond ik het meest nuttige artikel op het DEV2DEV forum van BEA

Hier deed moderator YuLimin de test en kwam tot de conclusie:

Bedrijf JVM-versie Maximale geheugen (mega) client Maximale geheugen (mega) server

ZO 1.5.x 1492 1520

SUN 1.5.5(Linux) 2634 2660

ZO 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

Ik gebruik JDK1.6.0_05 nu, heb het getest. Het grootste probleem in de clientstatus is dat mijn JDK de -Serverparameter niet herkent en de serverstatus niet kan testen. De schattingen zijn ongeveer hetzelfde.

ZON 1.6.0 1442 N/a

Het lijkt onmogelijk om groot geheugen in Java te gebruiken. En het algemene gezegde is dat als het geheugen te groot is, de tijd voor het opruimen van het afval lang zal zijn. Dit is ook begrijpelijk, meestal verzameld wanneer het geheugen niet genoeg is, het scannen van 2G-geheugen is natuurlijk veel langzamer dan 1G, en er zijn meer geheugenobjecten, de geschatte relatie neemt exponentieel toe.

Hieronder staan de testmethoden en testgegevens van YuLimin bijgevoegd.

Testmethode: Gebruik het java -XmxXXXXM -version commando om op de commandoregel te testen en verhoog vervolgens geleidelijk de waarde van XXXX; als het normaal draait, betekent dit dat de gespecificeerde geheugengrootte beschikbaar is, anders wordt er een foutmelding afgedrukt.
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com