消除内存错误后如何执行命令/脚本?

时间:2016-06-22 10:03:10

标签: java linux out-of-memory

我在JVM中的堆内存有限,我不能像嵌入式设备那样增加它。发生内存不足错误后,我想如何执行一些日志记录脚本。我该怎么做?

2 个答案:

答案 0 :(得分:2)

启动JVM时可以设置一个java选项标志,它将在发生OOM时执行给定的脚本。

-XX:OnOutOfMemoryError=string用于指定首次抛出OutOfMemoryError时要执行的命令或脚本

答案 1 :(得分:0)

这是一个小代码,您可以从中获得所需的数据。

当JVM继续“Out of Memory”时,实际上几乎不可能捕获。

执行此操作的唯一方法应该是检查“Free Memory”在运行时是否为0,但这样做可能非常繁重,因此您将很容易达到“Out Of Memory”。

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);