如何在JVM中捕获OutOfMemoryError并在捕获时运行脚本?
我有一个程序有时会抛出OOME,我知道JVM选项中有一个标志我可以设置,每当出现某个错误/exception(例如OOME)时它会调用我编写的脚本。 该脚本将为用户提供通知,并将使用不同的参数调用该程序,以便它不会再次获得OOME。
有谁知道如何设置这个标志? 我需要设置什么JVM选项? 我在网上到处看都找不到答案。
请帮帮我! 谢谢,是的
-XX:OnOutOfMemoryError =“cmd args; cmd args”
来自: http : //www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html#DebuggingOptions
我在论坛中找到了一个建议:在你的应用程序中捕获OOME(比如直接在main中,假设你是单线程)并在catch处理程序中执行此操作:
catch (OutOfMemoryError not_again) { System.gc(); System.runFinalization(); System.gc(); System.out.println("Your error message"); }
清理堆可能会释放足够的内存以在死亡之前生成最后一条错误消息。
- 将Web内容存储在JAR文件中
- Java键盘输入在控制台应用程序中解析
- 如何在java中将Blob转换为String和String转换为Blob
- 如何在J2me中动态获取移动IMEI号码?
- 我可以不映射/ flatMap一个OptionalInt吗?
- 动态更改RESTEasy服务返回类型
- 没有为logger找到appender(org.apache.http.client.protocol.RequestAddCookies)
- 对应于.net中的Newtonsoft.Json.JsonConvert.SerializeObject(Object source,Newtonsoft.Json.JsonSerializerSettings())的java代码?
- 小程序没有显示完整