Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 67240|Odpověď: 2

[Zdroj] Chyba JAVA nastala při inicializaci chyby VM

[Kopírovat odkaz]
Zveřejněno 14.08.2017 16:49:22 | | | |
Při inicializaci VM došlo k chybě
Nepodařilo se vyhradit dostatek místa pro objektovou haldu o velikosti 3145728KB



Nedávno pracuji na programu pro Javu. Původně se mi vždycky líbila správa paměti v Javě, nemusíš se starat o alokaci paměti, stačí alokovat, garbage collector ti paměť získá zpět. Program je nyní vyvinut s velkým množstvím dat a kvůli rychlosti načtu všechny informace do paměti, což zajistí rychlou odezvu. Stále opakovaně počítám paměť a přemýšlím o vlastním množství dat, což by mělo na začátku stačit (můj počítač má 4G paměť, i když Windows rozpoznává 3,5G, ale mělo by to být v pořádku ve srovnání s mým současným objemem dat).

Nečekaně program prvního experimentu běžel několik hodin a narazil na výjimku Out of Memory. Když jsem se podíval na nastavení svého stroje, nastavil jsem -Xms512M -Xmx1024M. Bez přemýšlení jsem to přímo změnil na -Xms512M -Xmx2048M, a výsledkem bylo, že jsem nemohl vyhradit dostatek místa pro objektovou haldu. Program se nemůže zvednout. Teprve tehdy jsem si uvědomil, že stále existuje limit na původní maximální paměť. Prohledal jsem internet a našel mnoho článků o tomto problému. Nakonec jsem našel nejužitečnější článek na fóru BEA DEV2DEV

Zde moderátor YuLimin provedl test a dospěl k závěru:

Verze firemního JVM Klient s maximální pamětí (mega) Server

NE 1.5.x 1492 1520

SUN 1.5.5(Linux) 2634 2660

NE 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

Teď JDK1.6.0_05 používám, testoval jsem to. Největší problém ve stavu klienta je, že můj JDK nerozpoznává parametr -Server a nemůže otestovat stav serveru. Odhady jsou zhruba stejné.

NE 1.6.0 1442 N/A

Zdá se, že v Javě není možné používat velkou paměť. A obecně se říká, že pokud je paměť příliš velká, doba sběru odpadu bude dlouhá. To je také pochopitelné, obecně se sbírá tehdy, když paměť nestačí, skenování 2G paměti je samozřejmě mnohem pomalejší než 1G a je více paměťových objektů, odhadovaný vztah exponenciálně roste.

Níže jsou přiloženy testovací metody a záznamy YuLimin.

Metoda testování:Testujte pomocí příkazu java -XmxXXXXM -version pod příkazovým řádkem, a poté postupně zvyšovat hodnotu XXXX; pokud je spuštěn normálně, znamená to, že je k dispozici zadaná velikost paměti, jinak se vytiskne chybová zpráva.





Otestujte maximální podporovanou paměť JVM a poté nastavte proměnné prostředí v systému

Název proměnné: _JAVA_OPTIONS
Hodnota: - Xmx1G






Předchozí:používá se plugin jQuery na celou obrazovku "jQuery Fullscreen Plugin"
Další:Rozdíl mezi certifikáty SSL, OV, DV a EV
 Pronajímatel| Zveřejněno 14.08.2017 16:51:30 |
Java verze "1.8.0_144"
Java(TM) SE runtime prostředí (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, smíšený režim)



Java verze "1.8.0_144" 64bitový serverový režim, 80g paměť, bez problémů

 Pronajímatel| Zveřejněno 01.09.2020 22:29:04 |
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com