Fórum Root.cz

Hlavní témata => Server => Téma založeno: Jaroslav 22. 11. 2013, 09:57:22

Název: JVM hlásí OutOfMemory
Přispěvatel: Jaroslav 22. 11. 2013, 09:57:22
Zdravim,
resim problem s aplikaci psanou v jave, ktera po sobe neuvolnuje objekty z pameti. Tzn. pri behu JVM se vyskytne OutOfMemory.
Proce JVM ma pridelenou pamet, kterou nechci menit.
Nic mene bych potreboval jak nastavit:
Automatic head dump
Auto restart JVM procesu

Zmena java kodu neni mozna...

Muze nekdo poradit?
Název: Re:JVM hlásí OutOfMemory
Přispěvatel: Jaroslav 22. 11. 2013, 10:06:57
*Automatic Heap dump
Název: Re:JVM hlásí OutOfMemory
Přispěvatel: podlesh 22. 11. 2013, 11:03:15
Aplikace má memory leaky a změna kódu není možná? Tak to je fakt, ehm, prekérní situace...

Možnosti se liší podle konkrétního JRE - budu předpokládat Sun/Oracle, verzi 6 nebo 7.

Automatický heapdump se zapne pomocí
Kód: [Vybrat]
-XX:-HeapDumpOnOutOfMemoryError, asi bude vhodné přihodit i
Kód: [Vybrat]
-XX:HeapDumpPath=cesta

Více viz dokumentace: http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html (http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html) nebo http://www.oracle.com/technetwork/java/javase/clopts-139448.html (http://www.oracle.com/technetwork/java/javase/clopts-139448.html) (k obojímu se dá doklikat, ale nutno říci že soudruzi z Oracle to rozhodně nedělají snadné).


Automatický restart AFAIK není přímo nabízen, většinou se dělají různé obalovací scriptíky v bashi... ale asi by bylo možné využít 
Kód: [Vybrat]
-XX:OnOutOfMemoryError="kill %p" (nezkoušel jsem).
Název: Re:JVM hlásí OutOfMemory
Přispěvatel: Jaroslav 22. 11. 2013, 11:20:02
-XX:OnOutOfMemoryError="kill %p"   %p  zjisti automaticky pid procesu?  pripadne muzu pouzit kill -9 %p
Název: Re:JVM hlásí OutOfMemory
Přispěvatel: podlesh 22. 11. 2013, 12:14:39
-XX:OnOutOfMemoryError="kill %p"   %p  zjisti automaticky pid procesu?  pripadne muzu pouzit kill -9 %p
No, podle dokumentace to tak funguje pro OnError, tak by snad mělo pro OnOutOfMemoryError - bohužel víc nevím, nezkoušel. Asi to bude potřebovat trochu více dolování v dokumentaci a pokud možno i nějaké experimentální ověření.