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

Pogled: 24728|Odgovoriti: 1

[Vir] Nisem mogel rezervirati dovolj prostora za 2097152KB objektni kup

[Kopiraj povezavo]
Objavljeno na 24. 07. 2017 10:43:36 | | | |
Napaka: Nisem mogel rezervirati dovolj prostora za 2097152KB objektni kup

Zagnal sem activemq in prijavil napako, ki je bila posledica prevelike alokacije, zato je pri dodeljevanju MQTT pomnilnika treba to določiti s kombinacijo velikosti strežniškega pomnilnika (uporabi free -g) in ali JDK podpira velikost pomnilnika.

Nastavitve parametrov JVM

Glavni parametri:
-Xms: Začetna velikost pomnilnika
-Xmx: Največja velikost pomnilnika
-Xmn: Mlajša generacija

Uporabi ukaz Java -Xmx2047M -version, da preveriš, ali izpolnjuje pogoje:


Rešitev:

Start - > Nadzorna plošča - > Sistem - > Napredne nastavitve - > Okoljske spremenljivke - > Sistemske spremenljivke

Nova spremenljivka:
Ime spremenljivke: _JAVA_OPTIONS   
Vrednost spremenljivke: -Xmx1G






Prejšnji:MySQL poizveduje tabelo brez praznega števila zapisov
Naslednji:Razlika med strežnikom in odjemalcem Java virtualnega stroja JVM
 Najemodajalec| Objavljeno na 24. 07. 2017 10:45:37 |
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: Uporabite ukaz java -XmxXXXXM -version za testiranje v ukazni vrstici, nato pa postopoma povečujte vrednost XXXX; če deluje normalno, to pomeni, da je na voljo določena velikost pomnilnika, sicer bo natisnjeno sporočilo o napaki.
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