捕获内存不足错误后如何执行commands/scripts?
How to execute commands/scripts after catching out of memory error?
我在 JVM 中的堆内存有限,我不能增加它,因为它是一个嵌入式设备。发生内存不足错误后,我怎么想执行一些日志记录脚本。我该怎么做?
这是一段小代码,您可以从中获取所需的数据。
实际上几乎不可能捕捉到 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);
您可以在启动 JVM 时设置一个 java 选项标志,它会在发生 OOM 时执行给定的脚本。
-XX:OnOutOfMemoryError=string
用于指定在首次抛出 OutOfMemoryError 时要执行的命令或脚本
我在 JVM 中的堆内存有限,我不能增加它,因为它是一个嵌入式设备。发生内存不足错误后,我怎么想执行一些日志记录脚本。我该怎么做?
这是一段小代码,您可以从中获取所需的数据。
实际上几乎不可能捕捉到 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);
您可以在启动 JVM 时设置一个 java 选项标志,它会在发生 OOM 时执行给定的脚本。
-XX:OnOutOfMemoryError=string
用于指定在首次抛出 OutOfMemoryError 时要执行的命令或脚本