7.1* Hogyan válasszuk ki a megfelelő szemétgyűjtőt

Ha az alkalmazásnak nincsenek szigorú késleltetési követelményei, egyszerűen futtassa az alkalmazást, és hagyja, hogy a JVM maga válassza ki a megfelelő gyűjtőt.

A legtöbb esetben az alapértelmezett beállítások jól működnek. Ha szükséges, módosíthatja a kupac méretét a teljesítmény javítása érdekében. Ha a teljesítmény továbbra sem a vártnak megfelelő, próbálja meg módosítani a gyűjtőt az alkalmazás követelményeinek megfelelően.

  • Szekvenciális . Ha az alkalmazás kis adatkészlettel rendelkezik (legfeljebb 100 MB) és/vagy egyetlen processzoron fut késleltetési követelmények nélkül.
  • Párhuzamos . Ha a prioritás az alkalmazás csúcsteljesítménye, és nincsenek késleltetési követelmények (vagy egy másodperces vagy hosszabb szünetek elfogadhatók).
  • CMS/G1 . Ha a válaszidő fontosabb, mint a teljes átviteli sebesség, és a szemétszállítási szüneteknek rövidebbnek kell lenniük egy másodpercnél.
  • ZGC . Ha a válaszidő magas prioritású és/vagy nagyon nagy kupacról van szó.

7.2* Szemétszállításra vonatkozó ajánlások

Kerülje a kézi indítókat

A szemétgyűjtés alapvető mechanizmusai mellett a folyamat egyik legfontosabb pontja a Java-ban az, hogy nem determinisztikus. Vagyis lehetetlen megjósolni, hogy a futási időben pontosan mikor fog bekövetkezni.

A System.gc() vagy Runtime.gc() metódusok használatával a kódba beilleszthet egy tippet a szemétgyűjtő elindításához, de ez nem garantálja, hogy valóban futni fog.

Használjon elemző eszközöket

Ha nincs elég memóriája az alkalmazás futtatásához, lassulásokat, hosszú szemétgyűjtési időt, "világmegállás" eseményeket és végül memóriahiányos hibákat tapasztalhat. Ez azt jelezheti, hogy a kupac túl kicsi, de azt is jelezheti, hogy az alkalmazás memóriaszivárgást szenved.

Használhat olyan megfigyelő eszközt, mint a jstat vagy a Java Flight Recorder, hogy megnézze, hogy a kupachasználat korlátlanul növekszik-e, ami hibára utalhat a kódban.

Inkább az alapértelmezett beállításokat

Ha kicsi, önálló Java-alkalmazása van, valószínűleg nem kell beállítania a szemétgyűjtést. Az alapértelmezett beállítások jó szolgálatot tesznek Önnek.

Használjon JVM-jelzőket a testreszabáshoz

A szemétgyűjtés Java-ban történő beállításának legjobb módja a JVM-jelzők beállítása. A zászlók segítségével beállíthatja a szemétgyűjtőt (például Soros, G1 és így tovább), a kupac kezdeti és maximális méretét, a halom partíciók méretét (például fiatal generáció, régi generáció) és sok minden mást. több.

Válassza ki a megfelelő csaptelepet

A kezdeti beállításokkal kapcsolatban jó iránymutatás az egyéni alkalmazás jellege. Például a párhuzamos szemétgyűjtő hatékony, de gyakran „világleállás” eseményeket idéz elő, így alkalmasabb belső feldolgozásra, ahol a hosszú szünetek elfogadhatók.

Ugyanakkor a CMS szemétgyűjtőt úgy tervezték, hogy minimalizálja a késleltetést, ami ideálissá teszi olyan webes alkalmazásokhoz, ahol fontos a válaszkészség.