Fórum Root.cz
Hlavní témata => Server => Téma založeno: 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?
-
*Automatic Heap dump
-
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í -XX:-HeapDumpOnOutOfMemoryError, asi bude vhodné přihodit i -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 -XX:OnOutOfMemoryError="kill %p" (nezkoušel jsem).
-
-XX:OnOutOfMemoryError="kill %p" %p zjisti automaticky pid procesu? pripadne muzu pouzit kill -9 %p
-
-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í.