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?
Antwort
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
Ich werde das ausprobieren .. Danke dafür. – rocktopus
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);
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
Sie nicht können geworfen wird, Sie aus der Erinnerung sind. –
@ 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
Vermutlich Duplikate mit http://stackoverflow.com/questions/12096403/java-shutting-down-on-out-of-memory-error – waltersu