当前位置: 首页 > 面试题库 >

如何在OutOfMemoryError _after_上进行堆转储时重新启动JVM?

阎弘
2023-03-14
问题内容

我知道-XX:+HeapDumpOnOutOfMemoryErrorJVM参数。我也知道-XX:OnOutOfMemoryError="cmd args;cmd args",这kill -3 <JVM_PID>将要求堆转储。

问题: 如何确保我OutOfMemoryError首先进行完整的堆转储, 然后
在转储完成后强制重新启动(或终止)?是我最好的选择-XX:OnOutOfMemoryError="kill -3 %p;sleep <time-it- takes-to-dump>;kill -9 %p"吗?


问题答案:
java -XX:+HeapDumpOnOutOfMemoryError -XX:OnOutOfMemoryError="kill -9 %p" TestApp

JVM将首先转储堆,然后执行OnOutOfMemoryError命令(证明)。



 类似资料:
  • 问题内容: 根据文档,当应用程序遇到OutOfMemoryException时,可以自动进行堆转储。 经过OutOfMemoryException过程只是从左侧菜单中消失。 此功能如何在VisualVM中工作? 谢谢。 C:\ work \ temp> java -XX:HeapDumpPath = c:/work/temp/file.hprof -XX:+ HeapDumpOnOutOfMemo

  • 问题内容: 我想弄清楚为什么Elasticsearch节点上的JVM堆使用率始终保持在80%以上。为了做到这一点,我通过运行一个堆转储 (5348是进程ID)。然后,我可以使用VisualVM分析转储。 问题是在进行转储时暂停了JVM,因此该节点基本上处于脱机状态约5分钟。 本文提出了一种更快的方法,该方法依赖于在Linux 上使用coredump 。我已经尝试过WinDbg,它创建了一个核心转储

  • 问题内容: 我们有一个运行Java 5的长期运行的服务器应用程序,对其进行分析,我们可以看到随着时间的流逝,旧的一代增长缓慢。它已在完整的GC上正确释放,但我希望能够使用堆转储查看Eclipse MAT中无法访问的对象。我已经使用+ XX:HeapDumpOnCtrlBreak成功获得了堆转储,但是JVM总是在转储堆之前执行GC。显然,在Java 6上不会发生这种情况,但目前我们只在5上停留。有什

  • 我通过jenkins在我的windows 10机器上运行jenkins。通过从cmd运行以下命令进行战争 java-jarjenkins.war--httpPost=8047 当我尝试通过UI重新启动jenkins时,我无法执行此操作,出现异常“jenkins无法按当前配置重新启动自身” 这是我迄今为止通过重新启动尝试的命令。 http://localhost:8090/restart我还尝试了另

  • 问题内容: 我编写了一个任务,通过套接字发送某些TCP消息。我有一个包含一堆消息和一些时间戳的文件,因此我将该任务编程为TimerTask,并使用带有第一个消息时间戳的Timer对其进行了调度。 完成后,任务运行方法结束,但其关联的线程仍然存在,不会被取消。如果我尝试使用新的时间重新安排任务,则会收到异常消息,通知我无法重新安排已安排的任务或取消的任务。 在重新计划之前,我也尝试过使用cancel

  • 我正在一个非常低配置的机器上工作,其中JVM有时会崩溃。 java应用程序名为application。jar,从本地流媒体服务器播放高清视频。该应用程序运行在悬挂在Rest室中的嵌入式win7触摸计算机上。 当堆大小超过某一时间,并且错误内存不足时,JVM将关闭。 我想重新启动我的应用程序.jar每当JVM崩溃。 这是可能的。然后如何做到呢? 谢了。 编辑:使用尝试捕获进行包装不起作用,因为jvm