Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 67240|Svare: 2

[Kilde] JAVA-feil oppstod under initialisering av VM-feil

[Kopier lenke]
Publisert på 14.08.2017 16:49:22 | | | |
Feil oppstod under initialisering av VM
Kunne ikke reservere nok plass til en 3145728KB objektheap



Jobber nylig med et program for Java. Opprinnelig har jeg alltid likt Javas minnehåndtering, du trenger ikke bekymre deg for å allokere minne, bare alloker, søppelsamleren vil ta tilbake minnet for deg. Nå er programmet utviklet med store mengder data, og for å spare hastighet skal jeg laste all informasjonen inn i minnet, noe som vil sikre rask respons. Jeg teller fortsatt minnet gjentatte ganger, og tenker på min egen datamengde, som burde være nok i starten (maskinen min har 4G-minne, selv om Windows gjenkjenner 3,5G, men det bør være fint sammenlignet med mitt nåværende datavolum).

Uventet gikk programmet til det første eksperimentet i noen timer og opplevde et unntak for ute av hukommelse. Når jeg ser på mine egne VM-innstillinger, satte jeg -Xms512M -Xmx1024M. Uten å tenke over det, endret jeg det direkte til -Xms512M -Xmx2048M, og resultatet var at jeg ikke kunne reservere nok plass til objektheap. Programmet klarer ikke å reise seg. Først da innså jeg at det fortsatt var en grense for det opprinnelige maksimale minnet. Jeg søkte på Internett og fant mange artikler som diskuterte dette temaet. Til slutt fant jeg den mest nyttige artikkelen på BEAs DEV2DEV-forum

Her gjennomførte moderator YuLimin testen og kom til konklusjonen:

Selskapets JVM-versjon Maksimal minne (mega) klient Maksimal minne (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 bruker JDK1.6.0_05 nå, testet det. Det største problemet i klienttilstanden er at JDK-en min ikke gjenkjenner -Server-parameteren og kan ikke teste serverens tilstand. Estimatene er omtrent de samme.

SØN 1.6.0 1442 N/a

Det virker som det er umulig å bruke stort minne i Java. Og det generelle ordtaket er at hvis minnet er for stort, vil søppelinnsamlingstiden bli lang. Dette er også forståelig, vanligvis samlet inn når minnet ikke er nok, skanning av 2G-minne er selvfølgelig mye tregere enn 1G, og det finnes flere minneobjekter, den estimerte sammenhengen øker eksponentielt.

Vedlagt nedenfor er YuLimins testmetoder og testprotokoller.

Testmetode:Test med kommandoen java -XmxXXXXM -version under kommandolinjen, og deretter gradvis øke verdien av XXXX, hvis det utføres normalt, betyr det at den angitte minnestørrelsen er tilgjengelig, ellers vil en feilmelding bli skrevet ut.





Test maksimal støttet minne i JVM, og sett deretter miljøvariablene på systemet

Variabelnavn: _JAVA_OPTIONS
Verdi: - Xmx1G






Foregående:jQuery fullskjerm-plugin "jQuery Fullscreen Plugin" brukes
Neste:Forskjellen mellom SSL-, OV-, DV- og EV-sertifikater
 Vert| Publisert på 14.08.2017 16:51:30 |
Java versjon "1.8.0_144"
Java(TM) SE kjøretidsmiljø (build 1.8.0_144-b01)
Java HotSpot(TM) 64-bits server-VM (bygg 25.144-b01, blandet modus)



Java-versjon "1.8.0_144" 64-bits server-side modus, 80 GB minne, ikke noe problem

 Vert| Publisert på 01.09.2020 22:29:04 |
JVM-parametere Alternativer
https://www.itsvse.com/thread-9369-1-1.html

Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com