Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 67240|Svar: 2

[Källa] JAVA-fel uppstod under initiering av VM-felet

[Kopiera länk]
Publicerad på 2017-08-14 16:49:22 | | | |
Fel uppstod vid initialiseringen av VM
Kunde inte reservera tillräckligt med utrymme för en 3145728KB objektheap



Jobbar nyligen på ett program för Java. Ursprungligen har jag alltid gillat Javas minneshantering, ingen anledning att oroa sig för att allokera minne, bara allokera, skräpsamlaren återtar minnet åt dig. Nu är programmet utvecklat med en stor mängd data, och för att öka hastigheten kommer jag att ladda all information i minnet, vilket säkerställer ett snabbt svar. Jag räknar fortfarande minnet upprepade gånger och tänker på min egen datamängd, vilket borde räcka i början (min maskin har 4G-minne, även om Windows känner igen 3,5G, men det borde vara okej jämfört med min nuvarande datavolym).

Oväntat kördes programmet för det första experimentet i några timmar och stötte på ett undantag för minnesbrist. När jag tittar på mina egna VM-inställningar satte jag -Xms512M -Xmx1024M. Utan att tänka på det ändrade jag direkt till -Xms512M -Xmx2048M, och resultatet blev att jag inte kunde reservera tillräckligt med utrymme för objektheap. Programmet kan inte resa sig. Först då insåg jag att det fortfarande fanns en gräns för det ursprungliga maximala minnet. Jag sökte på internet och hittade många artiklar som diskuterade detta ämne. Till slut hittade jag den mest användbara artikeln på BEAs DEV2DEV-forum

Här gjorde moderatorn YuLimin testet och kom fram till slutsatsen:

Företagets JVM-version Maximalt minne (mega) klient Maximalt 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

Jag använder JDK1.6.0_05 nu, testade det. Det största problemet i klienttillståndet är att min JDK inte känner igen -Server-parametern och kan inte testa serverstatusen. Uppskattningarna är ungefär desamma.

SÖN 1.6.0 1442 N/a

Det verkar som att det är omöjligt att använda stort minne i Java. Och det allmänna ordspråket är att om minnet är för stort kommer tiden för skräphantering att vara lång. Detta är också förståeligt, det samlas generellt in när minnet inte räcker, skanning av 2G-minne är förstås mycket långsammare än 1G, och det finns fler minnesobjekt, den uppskattade relationen ökar exponentiellt.

Bifogat nedan följer YuLimins testmetoder och testjournaler.

Testmetod:Testa med kommandot Java -XmxXXXXM -version under kommandoraden, och sedan gradvis öka värdet på XXXX, om det körs normalt betyder det att den angivna minnesstorleken är tillgänglig, annars kommer ett felmeddelande att skrivas ut.





Testa det maximalt stödda minnet för JVM:n och ställ sedan in miljövariablerna i systemet

Variabelnamn: _JAVA_OPTIONS
Värde: - Xmx1G






Föregående:jQuery fullskärmsplugin "jQuery Fullscreen Plugin" används
Nästa:Skillnaden mellan SSL, OV, DV och EV-certifikat
 Hyresvärd| Publicerad på 2017-08-14 16:51:30 |
Java-version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-bitars server-VM (build 25.144-b01, blandat läge)



Java-versionen "1.8.0_144" 64-bitars serverside-läge, 80 GB minne, inga problem

 Hyresvärd| Publicerad på 2020-09-01 22:29:04 |
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com