Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 24728|Vastaus: 1

[Lähde] Ei onnistunut varaamaan tarpeeksi tilaa 2097152KB objektipinolle

[Kopioi linkki]
Julkaistu 24.7.2017 10.43.36 | | | |
Virhe: Ei onnistunut varaamaan tarpeeksi tilaa 2097152KB objektipinolle

Käynnistin activemq:n ja ilmoitin virheen, joka johtui liiallisesta allokaatiosta, joten MQTT-muistin varauksessa se täytyy määrittää yhdistämällä palvelinmuistin koko (käytä vapaata -g) ja tukeeko JDK muistikokoa.

JVM-parametrien asetukset

Pääparametrit:
-Xms: Alkuperäinen muistikoko
-Xmx: Maksimimuistikoko
-Xmn: Nuorempi sukupolvi

Käytä Java -Xmx2047M -version -komentoa nähdäksesi, täyttääkö se seuraavaa:


Ratkaisu:

Start - > Ohjauspaneeli - > Järjestelmä - > Lisäasetukset - > Ympäristömuuttujat - > Järjestelmämuuttujat

Uusi muuttuja:
Muuttujan nimi: _JAVA_OPTIONS   
Muuttuva arvo: -Xmx1G






Edellinen:MySQL hakee taulua, jossa ei ole tyhjää määrää tietueita
Seuraava:Javan virtuaalikoneen JVM:n palvelimen ja asiakkaan ero
 Vuokraisäntä| Julkaistu 24.7.2017 10.45.37 |
Olen äskettäin työskennellyt Java-ohjelman parissa. Alun perin olen aina pitänyt Javan muistinhallinnasta, ei tarvitse huolehtia muistin jakamisesta, vain varaa se, roskien kerääjä ottaa muistin takaisin puolestasi. Nyt ohjelma on kehitetty suurella datamäärällä, ja nopeuden vuoksi lataan kaiken tiedon muistiin, mikä varmistaa nopean vasteen. Lasken edelleen muistia toistuvasti, mietin omaa datamäärääni, joka pitäisi riittää alussa (koneessani on 4G-muisti, vaikka Windows tunnistaa 3,5G:n, mutta sen pitäisi olla kunnossa nykyiseen datamäärääni verrattuna).

Yllättäen ensimmäisen kokeen ohjelma käynnistyi muutaman tunnin ja kohtasi Muistin Ulkopuolisen poikkeuksen. Katsoessani omia virtuaalikoneen asetuksiani asetin -Xms512M -Xmx1024M. Ilman ajatusta muutin sen suoraan muotoon -Xms512M -Xmx2048M, ja lopputuloksena en pystynyt varaamaan tarpeeksi tilaa objektikasalle. Ohjelma ei pääse ylös. Vasta silloin tajusin, että alkuperäisellä maksimimuistilla oli vielä raja. Etsin internetistä ja löysin monia artikkeleita, joissa käsiteltiin tätä aihetta. Lopuksi löysin hyödyllisimmän artikkelin BEA:n DEV2DEV-foorumilta

Tässä moderaattori YuLimin teki testin ja päätyi johtopäätökseen:

Yrityksen JVM-versio Maksimimuisti (mega) asiakas Maksimimuisti (mega) palvelin

SUN 1.5.x 1492 1520

SUN 1.5.5 (Linux) 2634 2660

SU 1.4.2 1564 1564

SUN 1.4.2 (Linux) 1900 1260

IBM 1.4.2(Linux) 2047 ei saatavilla

BEA JRockit 1.5 (U3) 1909 1902

Käytän JDK1.6.0_05 nyt, testasin sitä. Suurin ongelma asiakastilassa on, että JDK:ni ei tunnista -Server-parametria eikä pysty testaamaan palvelimen tilaa. Arviot ovat suunnilleen samat.

SU 1.6.0 1442 Ei saatavilla

Näyttää siltä, että Javassa on mahdotonta käyttää suurta muistia. Yleinen sanonta on, että jos muisti on liian suuri, roskien keräysaika on pitkä. Tämä on myös ymmärrettävää, yleensä kerätään, kun muisti ei riitä, 2G-muistin skannaus on tietenkin paljon hitaampaa kuin 1G:n, ja muistiobjekteja on enemmän, arvioitu suhde kasvaa eksponentiaalisesti.

Alla on liitteenä YuLiminin testimenetelmät ja testitiedot.

Testimenetelmä: Käytä java -XmxXXXXM -version -komentoa testataksesi komentorivillä ja nosta sitten XXXX:n arvoa vähitellen, jos se toimii normaalisti, se tarkoittaa, että määritelty muistikoko on käytettävissä, muuten virheilmoitus tulostuu.
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com