Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 24728|Válasz: 1

[Forrás] Nem tudtam elég helyet tartani a 2097152KB objektumhalomnak

[Linket másol]
Közzétéve 2017. 07. 24. 10:43:36 | | | |
Hiba: Nem tudtunk elegendő helyet tartani 2097152KB objektumhalom számára

Elindítottam az activemq-t, és jelentettem egy hibát, amit túl sok lefoglalás okozott, ezért az MQTT memória kiosztásakor a szerver memória méretének (szabad -g használatával) kombinálásával kell meghatározni, és hogy a JDK támogatja-e a memória méretet.

JVM paraméterbeállítások

Fő paraméterek:
-Xms: Kezdeti memóriaméret
-Xmx: Maximális memóriaméret
-Xmn: Fiatalabb generáció mérete

Használd a Java -Xmx2047M -verziós parancsot, hogy megnézd, teljesíti-e:


Megoldás:

Start - > Vezérlőpanel - > Rendszer - > Fejlett beállítások - > Környezeti változók - > Rendszerváltozók

Új változó:
Változó név: _JAVA_OPTIONS   
Változóérték: -Xmx1G






Előző:A MySQL egy táblázatot kérdez, ahol nincs üres számú rekord
Következő:A különbség a Java virtuális gépe, a JVM szervere és kliense között
 Háziúr| Közzétéve 2017. 07. 24. 10:45:37 |
Nemrég dolgoztam egy Java programon. Eredetileg mindig is tetszett a Java memóriakezelése, nem kell aggódni a memória kiosztása miatt, csak osztd ki, a szemetgyűjtő visszaszerezi a memóriát neked. Most a program nagy mennyiségű adattal van fejlesztve, és a sebesség érdekében minden információt betöltök a memóriába, ami gyors választ biztosít. Még mindig ismételten számolom a memóriát, gondolkodom a saját adatmennyiségemen, ami eleinte elég lesz (a gépemnek 4G memóriája van, bár a Windows felismeri a 3,5G-t, de az a jelenlegi adatmennyiséghez képest rendben kellene lennie).

Váratlanul az első kísérlet programja néhány órán át futott, és találkozott egy Out of Memory Exception-tal. A saját VM beállításaimat nézve beállítottam -Xms512M -Xmx1024M-t. Anélkül, hogy gondolkodtam volna rajta, közvetlenül -Xms512M -Xmx2048M-re változtattam, és az lett, hogy nem tudtam elég helyet tartani az objektumhalomnak. A program nem tud felkelni. Csak ekkor jöttem rá, hogy az eredeti maximális memória még mindig van korlát. Az interneten keresgéltem, és sok cikket találtam, amely erről a témáról szól. Végül megtaláltam a leghasznosabb cikket a BEA DEV2DEV fórumán

Itt YuLimin moderátor végezte el a tesztet, és a következtetésre jutott:

Cég JVM verziója Maximális memória (mega) kliens Maximum memória (mega) szerver

SUN 1.5.x 1492 1520

SUN 1.5.5(Linux) 2634 2660

VASÁRNAP 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

Most használom JDK1.6.0_05, teszteltem. A kliensállapotban a legnagyobb probléma, hogy a JDK-m nem ismeri fel a -Server paramétert, és nem tudja tesztelni a szerver állapotát. A becslések nagyjából ugyanazok.

VASÁRNAP 1.6.0 1442 N/a

Úgy tűnik, lehetetlen nagy memóriát használni Java-ban. És az általános mondás az, hogy ha a memória túl nagy, akkor a szemétgyűjtés ideje hosszú lesz. Ez is érthető, általában akkor gyűjtik össze, amikor a memória nem elég, a 2G memória szkennelése természetesen sokkal lassabb, mint az 1G, és több memóriaobjektum van, a becsült összefüggés exponenciálisan nő.

Az alábbiakban csatolva találhatók a YuLimin tesztmódszerei és tesztrekordjai.

Tesztmódszer: Használd a java -XmxXXXXM -verziós parancsot a parancssoron teszteljék, majd fokozatosan növeld az XXXX értékét; ha normálisan fut, az azt jelenti, hogy a megadott memóriaméret elérhető, különben hibaüzenet jelenik meg.
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com