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

Nézet: 67240|Válasz: 2

[Forrás] JAVA hiba történt a VM inicializálása során

[Linket másol]
Közzétéve 2017. 08. 14. 16:49:22 | | | |
Hiba történt a VM inicializálása közben
Nem tudtam elég helyet tartani 3145728KB objektumhalmaznak



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:Tesztelje a java -XmxXXXXM -verziós parancsot a parancssorban, majd fokozatosan növeljük az XXXX értékét, ha normálisan futtatják, az azt jelenti, hogy a megadott memóriaméret elérhető, különben hibaüzenet jelenik meg.





Teszteljük a JVM maximális támogatott memóriáját, majd állítsuk be a rendszer környezeti változóit

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






Előző:A jQuery teljes képernyős plugin "jQuery Fullscreen Plugin" szerepel
Következő:Az SSL, OV, DV és EV tanúsítványok közötti különbség
 Háziúr| Közzétéve 2017. 08. 14. 16:51:30 |
Java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-bit Server VM (build 25.144-b01, mixed mód)



Java verzió "1.8.0_144" 64 bites szerveroldali mód, 80g memória, probléma nélkül

 Háziúr| Közzétéve 2020. 09. 01. 22:29:04 |
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