Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 67240|Odpoveď: 2

[Zdroj] Chyba JAVA nastala počas inicializácie chyby VM

[Kopírovať odkaz]
Zverejnené 14. 8. 2017 16:49:22 | | | |
Chyba nastala pri inicializácii VM
Nepodarilo sa vyhradiť dosť miesta pre 3145728KB objektovú haldu



Nedávno pracujem na programe pre Javu. Pôvodne sa mi vždy páčila správa pamäte v Jave, nemusíš sa starať o alokáciu pamäte, stačí alokovať, garbage collector ti pamäť získa späť. Teraz je program vyvinutý s veľkým množstvom dát a kvôli rýchlosti načítam všetky informácie do pamäte, čo zabezpečí rýchlu reakciu. Stále opakovane počítam pamäť a myslím na vlastné množstvo dát, ktoré by malo na začiatku stačiť (môj počítač má 4G pamäť, hoci Windows rozpoznáva 3,5G, ale malo by to byť v poriadku v porovnaní s mojím aktuálnym objemom dát).

Nečakane program prvého experimentu bežal niekoľko hodín a narazil na výnimku Out of Memory. Keď som sa pozrel na nastavenia vlastného VM, nastavil som -Xms512M -Xmx1024M. Bez rozmýšľania som to priamo zmenil na -Xms512M -Xmx2048M, a výsledkom bolo, že som nemohol vyhradiť dosť miesta pre objektovú haldu. Program sa nemôže postaviť. Až vtedy som si uvedomil, že stále existuje limit pôvodnej maximálnej pamäte. Prehľadal som internet a našiel som mnoho článkov, ktoré sa tejto téme zaoberajú. Nakoniec som našiel najužitočnejší článok na fóre BEA DEV2DEV

Tu moderátor YuLimin vykonal test a dospel k záveru:

Verzia Company JVM Klient s maximálnou pamäťou (mega) Server

NE 1.5.x 1492 1520

SUN 1.5.5(Linux) 2634 2660

SUN 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

Teraz JDK1.6.0_05 používam, testoval som to. Najväčší problém v klientskom stave je, že môj JDK nerozpoznáva parameter -Server a nemôže otestovať stav servera. Odhady sú približne rovnaké.

SUN 1.6.0 1442 N/a

Zdá sa, že v Jave nie je možné použiť veľkú pamäť. A všeobecné príslovie je, že ak je pamäť príliš veľká, čas zberu odpadu bude dlhý. To je tiež pochopiteľné, zvyčajne sa zbiera, keď pamäť nestačí, skenovanie 2G pamäte je samozrejme oveľa pomalšie ako 1G a je viac pamäťových objektov, odhadovaný vzťah exponenciálne rastie.

Nižšie sú priložené testovacie metódy a testovacie záznamy spoločnosti YuLimin.

Metóda testovania:Otestujte pomocou príkazu java -XmxXXXXM -version pod príkazovým riadkom, a potom postupne zvyšovať hodnotu XXXX, ak sa vykoná normálne, znamená to, že špecifikovaná veľkosť pamäte je dostupná, inak sa vytlačí chybová správa.





Otestujte maximálnu podporovanú pamäť JVM a potom nastavte environmentálne premenné na systéme

Názov premenných: _JAVA_OPTIONS
Hodnota: - Xmx1G






Predchádzajúci:používa sa plugin jQuery na celú obrazovku "jQuery Fullscreen Plugin"
Budúci:Rozdiel medzi certifikátmi SSL, OV, DV a EV
 Prenajímateľ| Zverejnené 14. 8. 2017 16:51:30 |
Java verzia "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-bitový server VM (build 25.144-b01, zmiešaný režim)



Java verzia "1.8.0_144" 64-bitový serverový režim, 80g pamäť, bez problémov

 Prenajímateľ| Zverejnené 1. 9. 2020 22:29:04 |
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com