See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 67240|Vastuse: 2

[Allikas] JAVA viga tekkis VM-i initsialiseerimise ajal

[Kopeeri link]
Postitatud 14.08.2017 16:49:22 | | | |
Viga tekkis VM-i initsialiseerimise ajal
Ei suutnud piisavalt ruumi 3145728KB objektikuhja jaoks



Hiljuti töötasin Java programmi kallal. Alguses on mulle alati meeldinud Java mäluhaldus, pole vaja muretseda mälu jaotamise pärast, lihtsalt eralda, prügikoristaja võtab mälu sulle tagasi. Nüüd on programm arendatud suure andmemahuga ja kiiruse huvides laen kogu info mällu, mis tagab kiire vastuse. Loen endiselt mälu korduvalt, mõeldes oma andmemahtudele, mis peaks alguses piisama (minu arvutil on 4G mälu, kuigi Windows tunneb ära 3,5G, kuid see peaks olema korras võrreldes praeguse andmemahuga).

Üllatuslikult jooksis esimese eksperimendi programm paar tundi ja sattus mälestuse kadumise erandile. Vaadates oma virtuaalmasina seadeid, määrasin -Xms512M -Xmx1024M. Ilma sellele mõtlemata muutsin selle otse -Xms512M -Xmx2048M-ks ja tulemuseks oli, et ma ei suutnud piisavalt ruumi objektide kuhja jaoks reserveerida. Programm ei saa püsti. Alles siis sain aru, et algsel maksimaalsel mälul on endiselt piirang. Otsisin internetist ja leidsin palju artikleid, mis käsitlesid seda teemat. Lõpuks leidsin BEA DEV2DEV foorumist kõige kasulikuma artikli

Siin tegi moderaator YuLimin testi ja jõudis järeldusele:

Ettevõtte JVM versioon Maksimaalne mälu (mega) klient Maksimaalne mälu (mega) server

SUN 1.5.x 1492 1520

SUN 1.5.5 (Linux) 2634 2660

PÜHAPÄEV 1.4.2 1564 1564

SUN 1.4.2 (Linux) 1900 1260

IBM 1.4.2(Linux) 2047 puudub

BEA JRockit 1.5 (U3) 1909 1902

Kasutan JDK1.6.0_05 praegu, testisin. Suurim probleem kliendi olekus on see, et minu JDK ei tunne ära -Server parameetrit ega saa serveri olekut testida. Hinnangud on umbes samad.

SUN 1.6.0 1442 N/a

Tundub, et Javas on võimatu kasutada suurt mälu. Ja üldine ütlus on, et kui mälu on liiga suur, on prügi koristamise aeg pikk. See on samuti mõistetav, tavaliselt kogutakse see siis, kui mälust ei piisa, 2G mälu skaneerimine on muidugi palju aeglasem kui 1G mälu ja mäluobjekte on rohkem, hinnanguline seos kasvab eksponentsiaalselt.

Allpool on lisatud YuLimini testimeetodid ja testikirjed.

Testimeetod:Testi käsurea all java -XmxXXXXM -versiooni käsuga, ja seejärel suurendatakse järk-järgult XXXX väärtust; kui see käivitatakse normaalselt, tähendab see, et määratud mälu suurus on saadaval, vastasel juhul trükitakse veateade.





Testige JVM-i maksimaalset toetatud mälu ja seejärel seadistage süsteemi keskkonnamuutujad

Muutuja nimi: _JAVA_OPTIONS
Väärtus: - Xmx1G






Eelmine:Kasutatakse jQuery täisekraani pluginat "jQuery Fullscreen Plugin"
Järgmine:SSL, OV, DV ja EV sertifikaatide erinevus
 Üürileandja| Postitatud 14.08.2017 16:51:30 |
Java version "1.8.0_144"
Java(TM) SE käituskeskkond (build 1.8.0_144-b01)
Java HotSpot(TM) 64-bitine serveri VM (build 25.144-b01, segarežiim)



Java versioon "1.8.0_144" 64-bitine serveripoolne režiim, 80g mälu, probleemideta

 Üürileandja| Postitatud 01.09.2020 22:29:04 |
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com