Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 67240|Odgovoriti: 2

[Vir] Napaka JAVA se je pojavila med inicializacijo napake VM

[Kopiraj povezavo]
Objavljeno na 14. 08. 2017 16:49:22 | | | |
Napaka se je pojavila med inicializacijo VM
Nisem mogel rezervirati dovolj prostora za 3145728KB objektni kup



Nedavno delam na programu za Javo. Sprva mi je bilo vedno všeč upravljanje pomnilnika v Javi, ni treba skrbeti za dodeljevanje pomnilnika, samo dodelji, zbiralnik smeti bo pomnilnik povrnil namesto tebe. Program je zdaj razvit z veliko količino podatkov, in zaradi hitrosti bom vse informacije naložil v pomnilnik, kar bo zagotovilo hiter odziv. Še vedno večkrat štejem pomnilnik in razmišljam o svoji količini podatkov, kar bi moralo na začetku zadostovati (moj računalnik ima 4G pomnilnik, čeprav Windows prepozna 3,5G, a bi moralo biti v redu glede na trenutni podatkovni volumen).

Nepričakovano je program prvega eksperimenta trajal nekaj ur in naletel na izjemo Izven spomina. Glede na nastavitve svojega VM-ja sem nastavil -Xms512M -Xmx1024M. Brez razmišljanja sem ga neposredno spremenil v -Xms512M -Xmx2048M, rezultat pa je bil, da nisem mogel rezervirati dovolj prostora za kup objektov. Program ne more vstati. Šele takrat sem ugotovil, da obstaja omejitev prvotnega največjega pomnilnika. Preiskal sem internet in našel veliko člankov, ki obravnavajo to temo. Končno sem našel najbolj uporaben članek na BEA-jevem forumu DEV2DEV

Tukaj je moderator YuLimin opravil test in prišel do zaključka:

Različica podjetja JVM Največji pomnilnik (mega) odjemalec Največja pomnilniška (mega) strežnik

SUN 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

Zdaj uporabljam JDK1.6.0_05, testiral sem. Največja težava v odjemalskem stanju je, da moj JDK ne prepozna parametra -Server in ne more testirati stanja strežnika. Ocene so približno enake.

SUN 1.6.0 1442 N/a

Zdi se, da je v Javi nemogoče uporabljati velik pomnilnik. In splošno pravilo pravi, da če je pomnilnik prevelik, bo čas zbiranja smeti dolg. To je tudi razumljivo, običajno se zbira, ko pomnilnik ni dovolj, skeniranje 2G pomnilnika je seveda veliko počasnejše kot 1G, in je več pomnilniških objektov, ocenjena povezava eksponentno narašča.

Spodaj so priložene testne metode in testni zapisi YuLimina.

Metoda testiranja:Preizkusite z ukazom java -XmxXXXXM -version pod ukazno vrstico, in nato postopoma povečevati vrednost XXXX; če se izvaja normalno, to pomeni, da je določena velikost pomnilnika na voljo, sicer se bo natisnilo sporočilo o napaki.





Testirajte maksimalno podprti pomnilnik JVM in nato nastavite okoljske spremenljivke na sistemu

Ime spremenljivke: _JAVA_OPTIONS
Vrednost: - Xmx1G






Prejšnji:jQuery celozaslonski vtičnik "jQuery Fullscreen Plugin" se uporablja
Naslednji:Razlika med SSL, OV, DV in EV certifikati
 Najemodajalec| Objavljeno na 14. 08. 2017 16:51:30 |
Java različica "1.8.0_144"
Java(TM) SE runtime okolje (build 1.8.0_144-b01)
Java HotSpot(TM) 64-bitni strežnik VM (build 25.144-b01, mešani način)



Java različica "1.8.0_144" 64-bitni strežniški način, 80g pomnilnika, brez težav

 Najemodajalec| Objavljeno na 1. 09. 2020 22:29:04 |
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com