2016-06-22 9 views
1

Ich habe Heapspeicher in JVM begrenzt und ich kann es nicht erhöhen, wie es ein eingebettetes Gerät ist. Wie auch immer, ich möchte einige Logging-Skripte ausführen, nachdem ein Speicherfehler aufgetreten ist. wie mache ich das?Wie führe ich Befehle/Skripte aus, nachdem ein Speicherfehler aufgetreten ist?

+2

Sie nicht können geworfen wird, Sie aus der Erinnerung sind. –

+0

@ ElliottFrisch .. Danke für die schnelle Antwort. aber nicht genug Speicher ist in JVM richtig? Kann ich es nicht vor der Hand erkennen? Gibt es irgendeine Technik? Es muss etwas geben, was wir tun können. – rocktopus

+0

Vermutlich Duplikate mit http://stackoverflow.com/questions/12096403/java-shutting-down-on-out-of-memory-error – waltersu

Antwort

2

Es ist eine Java-Option-Flag Sie festlegen können, wenn die JVM starten, die ein gegebenes Skript ausgeführt wird whhen ein OOM auftritt.

-XX:OnOutOfMemoryError=string wird verwendet, um einen Befehl oder ein Skript angeben, die ausgeführt werden, wenn ein OutOfMemoryError ersten

+0

Ich werde das ausprobieren .. Danke dafür. – rocktopus

0

Hier ist ein kleiner Code, von dem Sie die Daten erhalten können, die Sie benötigen.

Eigentlich ist fast unmöglich zu fangen, wenn Sie JVM auf "Out Of Memory" gehen.

Der einzige Weg, dies zu tun, sollte sein, ob "Free Memory" zur Laufzeit 0 wird, aber dies könnte sehr schwer werden und Sie werden "Out Of Memory" leicht erreichen.

int mb = 1024*1024; 

//Getting the runtime reference from system 
Runtime runtime = Runtime.getRuntime(); 

//Print used memory 
System.out.println("Used Memory:" + (runtime.totalMemory() - runtime.freeMemory())/mb); 

//Print free memory 
System.out.println("Free Memory:" + runtime.freeMemory()/mb); 

//Print total available memory 
System.out.println("Total Memory:" + runtime.totalMemory()/mb); 

//Print Maximum available memory 
System.out.println("Max Memory:" + runtime.maxMemory()/mb); 
+0

Danke. Aber wie du richtig gesagt hast ist es sehr schwer, also kann ich es nicht benutzen. Aber bitte antworten Sie, wenn Sie noch etwas finden. – rocktopus