Preskoči na glavno vsebino

Navýšenie pamäte pre Javu

Klient zamŕza a prestáva reagovať – nedostatok pamäte

Avtor: Petr Pech

Pokiaľ sa Vám klient po určitom čase používania začína zasekávať, intenzívne pritom využíva CPU a nakoniec prestane reagovať úplne, s najväčšou pravdepodobnosťou máte nastavené príliš málo pamäte pre Java proces. Typicky môže táto situácia nastávať pri generovaní tlačových zostáv alebo pri vykonávaní exportov s väčším objemom dát.

Identifikácia problému

Tento krok možno vynechať. Problém nedostatku pamäte možno overiť spustením klienta z príkazového riadku (terminálu), za predpokladu použitia rovnakej konfigurácie pamäte ako pri normálnom spustení (pozri konfiguračné súbory). Spustiť klienta z príkazového riadku je možné týmito spôsobmi:

  • Windows: C:\Program Files (x86)\WinStrom\spustit-winstrom.bat pred spustením porovnajte parametre v tomto súbore so súborom parametry.txt

  • Linux: v terminálovom okne spustiť /usr/bin/flexibee zhodné s normálnym spustením aplikácie

  • MacOS: v terminálovom okne spustiť /Applications/FlexiBee.app/Contents/MacOS/JavaAppLauncher (na starších verziách Flexi je príkaz /Applications/FlexiBee.app/Contents/MacOS/flexibee-console) - pred spustením porovnajte parametre v tomto súbore s konfiguráciou v Info.plist

V konzole sa pri zasekávaní spôsobenom nedostatkom pamäte zobrazujú tieto chyby:

  1. java.lang.OutOfMemoryError: Java heap space

  2. java.lang.OutOfMemoryError: PermGen space

  3. java.lang.OutOfMemoryError: GC overhead limit exceeded

Úprava parametrov

Hodnoty parametrov ovplyvňujúce maximálnu veľkosť pamäte pre aplikáciu možno zmeniť v týchto konfiguračných súboroch:

  • Windows: C:\Program Files (x86)\WinStrom\parametry.txt, resp. na ceste, kde ste vykonali inštaláciu Flexi

  • Linux: /etc/default/flexibee doplniť parameter: FLEXIBEE_JAVA_ARGS="${FLEXIBEE_JAVA_ARGS} -Xms1g -Xmx2g"

    • -Xms = initial heap size
      Určuje počiatočnú veľkosť Java heapu pri štarte aplikácie → JVM si hneď pri štarte alokuje presne túto veľkosť.

    • -Xmx = maximum heap size
      Určuje maximálnu veľkosť heapu, na ktorú sa JVM môže počas behu aplikácie zväčšiť → JVM nikdy neprekročí túto hodnotu.

    • pre stabilný výkon možno ponechať na rovnakej výške.

  • MacOS: /Applications/FlexiBee.app/Contents/Info.plist upraviť parameter <string>-Xmx1g</string> (v poslednej kolekcii array)

Nastavenie pamäte Javy je vo väčšine prípadov individuálne, v závislosti od spôsobu práce s príslušnou Java aplikáciou. Pokiaľ by Vás zaujímalo viac o tom, ako Java pracuje s pamäťou a ako nastaviť jej rôzne parametre, môžete čerpať z nasledujúceho odkazu.

Pri vykonávaní pokročilejších zmien v parametroch odporúčame sledovať aktuálne využitie pamäte a jej uvoľňovanie pomocou tohto nástroja.

Odporúčané hodnoty parametrov

Minimum

Odporúčané zvýšenie

Java heap -Xmx1g

-Xmx2000m

Ste s tem dobili odgovor na svoje vprašanje?