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

Vaade: 24728|Vastuse: 1

[Allikas] 2097152KB objektikuhja jaoks ei saanud piisavalt ruumi reserveerida

[Kopeeri link]
Postitatud 24.07.2017 10:43:36 | | | |
Viga: Ei saanud piisavalt ruumi 2097152KB objektikuhjale

Käivitasin activemq ja teatasin veast, mis oli põhjustatud liiga suurest eraldamisest, seega MQTT mälu eraldamisel tuleb määrata serveri mälu suurus (kasuta vaba -g) ja seda, kas JDK toetab mälu suurust.

JVM parameetrite seaded

Peamised parameetrid:
-Xms: Algne mälu suurus
-Xmx: Maksimaalne mälu suurus
-Xmn: Noorema põlvkonna suurus

Kasuta käsku Java -Xmx2047M -versioon, et kontrollida, kas see vastab:


Lahus:

Start - > Juhtpaneel - > Süsteem - > Täpsemad seaded - > Keskkonna muutujad - > Süsteemimuutujad

Uus muutuja:
Muutuja nimi: _JAVA_OPTIONS   
Muutuv väärtus: -Xmx1G






Eelmine:MySQL pärib tabelit, millel pole tühja arvu kirjeid
Järgmine:Erinevus Java virtuaalmasina JVM serveri ja kliendi vahel
 Üürileandja| Postitatud 24.07.2017 10:45:37 |
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: Kasuta käsurea testimiseks java -XmxXXXXM -version käsku ja seejärel suurenda XXXX väärtust järk-järgult; kui see töötab normaalselt, tähendab see, et määratud mälu suurus on saadaval, vastasel juhul prinditakse veateade.
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