Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 24728|Svar: 1

[Kilde] Kunne ikke reservere nok plads til 2097152KB objektheap

[Kopier link]
Opslået på 24/07/2017 10.43.36 | | | |
Fejl: Kunne ikke reservere nok plads til 2097152KB objektheap

Jeg startede activemq og rapporterede en fejl, som skyldtes for meget allokering, så når MQTT-hukommelse allokeres, skal det bestemmes ved at kombinere serverens hukommelsesstørrelse (brug free -g) og om JDK understøtter hukommelsesstørrelsen.

JVM-parameterindstillinger

Hovedparametre:
-Xms: Starthukommelsesstørrelse
-Xmx: Maksimal hukommelsesstørrelse
-Xmn: Ung generations størrelse

Brug kommandoen Java -Xmx2047M -version for at se, om den overholder:


Opløsning:

Start - > Kontrolpanel - > System - > Avancerede indstillinger - > Miljøvariabler - > Systemvariabler

Ny variabel:
Variabelnavn: _JAVA_OPTIONS   
Variabel værdi: -Xmx1G






Tidligere:MySQL forespørger en tabel uden tomt antal poster
Næste:Forskellen mellem server og klient i Javas virtuelle maskine JVM
 Udlejer| Opslået på 24/07/2017 10.45.37 |
Jeg arbejder for nylig på et program til Java. Oprindeligt har jeg altid kunnet lide Javas hukommelsesstyring, der er ingen grund til at bekymre sig om at allokere hukommelse, bare alloker, garbage collector vil genvinde hukommelsen for dig. Nu er programmet udviklet med en stor mængde data, og for hastighedens skyld vil jeg indlæse al informationen i hukommelsen, hvilket sikrer et hurtigt svar. Jeg tæller stadig hukommelsen gentagne gange og tænker på min egen datamængde, hvilket burde være nok i starten (min maskine har 4G-hukommelse, selvom Windows genkender 3,5G, men det burde være fint sammenlignet med mit nuværende datavolumen).

Uventet kørte programmet for det første eksperiment i et par timer og stødte på en Out of Memory-undtagelse. Når jeg kigger på mine egne VM-indstillinger, sætter jeg -Xms512M -Xmx1024M. Uden at tænke over det ændrede jeg det direkte til -Xms512M -Xmx2048M, og resultatet var, at jeg ikke kunne reservere nok plads til objektheap. Programmet kan ikke rejse sig. Først da indså jeg, at der stadig var en grænse for den oprindelige maksimale hukommelse. Jeg søgte på internettet og fandt mange artikler, der diskuterede dette emne. Endelig fandt jeg den mest nyttige artikel på BEAs DEV2DEV-forum

Her lavede moderator YuLimin testen og nåede frem til konklusionen:

Firmaets JVM-version Maksimal hukommelse (mega) klient Maksimal hukommelse (mega) server

SØN 1.5.x 1492 1520

SUN 1.5.5(Linux) 2634 2660

SØN 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

Jeg bruger JDK1.6.0_05 nu, har testet det. Det største problem i klienttilstanden er, at min JDK ikke genkender -Server-parameteren og ikke kan teste serverens tilstand. Estimaterne er omtrent de samme.

SØN 1.6.0 1442 N/a

Det virker som om, det er umuligt at bruge stor hukommelse i Java. Og det generelle ordsprog er, at hvis hukommelsen er for stor, vil affaldsindsamlingstiden være lang. Dette er også forståeligt, generelt indsamlet, når hukommelsen ikke er nok, scanning af 2G-hukommelse er selvfølgelig meget langsommere end 1G, og der er flere hukommelsesobjekter, den estimerede relation vokser eksponentielt.

Vedhæftet nedenfor er YuLimins testmetoder og testoptegnelser.

Testmetode: Brug kommandoen java -XmxXXXXM -version til at teste på kommandolinjen, og øg derefter gradvist værdien af XXXX; hvis det kører normalt, betyder det, at den angivne hukommelsesstørrelse er tilgængelig, ellers vil der blive udskrevet en fejlmeddelelse.
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com