Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 24728|Atsakyti: 1

[Šaltinis] Nepavyko rezervuoti pakankamai vietos 2097152 KB objektų krūvai

[Kopijuoti nuorodą]
Paskelbta 2017-07-24 10:43:36 | | | |
Klaida: nepavyko rezervuoti pakankamai vietos 2097152 KB objektų krūvai

Paleidau activemq ir pranešiau apie klaidą, kurią sukėlė per didelis paskirstymas, todėl skirstant MQTT atmintį, ją reikia nustatyti derinant serverio atminties dydį (naudokite laisvą -g) ir ar JDK palaiko atminties dydį.

JVM parametrų nustatymai

Pagrindiniai parametrai:
-Xms: pradinis atminties dydis
-Xmx: maksimalus atminties dydis
-Xmn: Jaunesnės kartos dydis

Naudokite komandą Java -Xmx2047M -version, kad sužinotumėte, ar ji atitinka:


Sprendimas:

Pradėti - > Valdymo skydas - > Sistema - > Išplėstiniai nustatymai - > Aplinkos kintamieji - > Sistemos kintamieji

Naujas kintamasis:
Kintamojo pavadinimas: _JAVA_OPTIONS   
Kintamoji vertė: -Xmx1G






Ankstesnis:MySQL užklausa lentelėje be tuščio įrašų skaičiaus
Kitą:Skirtumas tarp serverio ir kliento Java virtualios mašinos JVM
 Savininkas| Paskelbta 2017-07-24 10:45:37 |
Neseniai dirbo su "Java" programa. Iš pradžių man visada patiko "Java" atminties valdymas, nereikia jaudintis dėl atminties paskirstymo, tiesiog paskirstykite, šiukšlių surinkėjas atgaus atmintį už jus. Dabar programa sukurta su dideliu duomenų kiekiu, o greičio sumetimais ketinu įkelti visą informaciją į atmintį, kuri užtikrins greitą atsakymą. Aš vis dar pakartotinai skaičiuoju atmintį, galvoju apie savo duomenų kiekį, kurio pradžioje turėtų pakakti (mano mašina turi 4G atmintį, nors "Windows" atpažįsta 3.5G, bet tai turėtų būti gerai, palyginti su dabartiniu duomenų kiekiu).

Netikėtai pirmojo eksperimento programa veikė kelias valandas ir susidūrė su atminties trūkumo išimtimi. Žiūrėdamas į savo VM nustatymus, nustatiau -Xms512M -Xmx1024M. Apie tai negalvodamas, tiesiogiai pakeičiau jį į -Xms512M -Xmx2048M, ir rezultatas buvo toks, kad negalėjau rezervuoti pakankamai vietos objektų krūvai. Programa negali atsikelti. Tik tada supratau, kad vis dar yra pradinės maksimalios atminties riba. Ieškojau internete ir radau daug straipsnių, kuriuose aptariamas šis klausimas. Galiausiai radau naudingiausią straipsnį BEA DEV2DEV forume

Čia moderatorius YuLimin atliko testą ir padarė išvadą:

Įmonės JVM versija Maksimali atmintis (mega) klientas Maksimali atmintis (mega) serveris

SEKMADIENIS 1.5.x 1492 1520

SAULĖ 1.5.5 (Linux) 2634 2660

SEKMADIENIS 1.4.2 1564 1564

SAULĖ 1.4.2 (Linux) 1900 1260

IBM 1.4.2 (Linux) 2047 N/A

BEA JRockit 1.5 (U3) 1909 1902

Dabar naudoju JDK1.6.0_05, išbandžiau. Didžiausias dalykas kliento būsenoje yra tai, kad mano JDK neatpažįsta parametro -Server ir negali patikrinti serverio būsenos. Skaičiavimai yra maždaug tokie patys.

SEKMADIENIS 1.6.0 1442 N/a

Atrodo, kad "Java" neįmanoma naudoti didelės atminties. Ir bendras posakis yra tas, kad jei atmintis yra per didelė, šiukšlių surinkimo laikas bus ilgas. Tai taip pat suprantama, paprastai renkama, kai atminties nepakanka, 2G atminties nuskaitymas, žinoma, yra daug lėtesnis nei 1G, o atminties objektų yra daugiau, numatomas ryšys eksponentiškai didėja.

Žemiau pateikiami YuLimin bandymo metodai ir bandymų įrašai.

Bandymo metodas: Norėdami išbandyti komandinę eilutę, naudokite komandą java -XmxXXXXM -version, tada palaipsniui didinkite XXXX vertę, jei ji veikia normaliai, tai reiškia, kad yra nurodytas atminties dydis, priešingu atveju bus išspausdintas klaidos pranešimas.
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com