如果JVM被暂停,这意味着什么?

时间:2012-09-18 09:30:01

标签: java jboss jvm java-service-wrapper

我的应用程序运行时。我收到一条消息说:

Ping: Timed out waiting for signal from JVM.
The JVM was launched with debug options so this may be because the JVM
is currently suspended by a debugger.  Any future timeouts during this
JVM invocation will be silently ignored.

这是什么意思?它似乎会阻止来自外部的任何网络请求?因为当我上传文件时,它失败了。帮助我。

3 个答案:

答案 0 :(得分:3)

调试代码时,通常会在其中设置breakpoints,以便在某个时刻中断程序的执行。当JVM遇到这样的断点时,它会挂起执行,并等待调试器更进一步(步入/跳过/跳出/等)。

如果你的进程附加了一个UI调试器(如Eclipse),你可以从那里控制执行流程,监视变量值等。

您所看到的消息,简单地说,您获得的超时可能只是这种情况的结果,并由Java Service Wrapper as described here显示:

  

如果wrapper.java.command属性设置为“jdb”或“jdb.exe”,或者其中一个wrapper.java.additional.<n>属性设置为“ - ,则Wrapper将决定JVM是否正在使用调试器” - Xdebug的”。

因此,您似乎在调试模式下使用Java Service Wrapper启动应用程序,并且当某些超时到期时,它会通过附加消息向您发出警告。

答案 1 :(得分:1)

JVM调试选项允许您连接到JVM并逐步执行代码(Google java远程调试以获取更多信息)。基本上这意味着可以远程暂停和控制代码执行(一次执行一个语句,检查变量值等)。虽然这非常有用,但它当然会干扰软件的正常操作。如果您不打算在调试模式下运行JVM,请尝试找出设置它并删除它(它可能在JAVA_OPTS(环境变量)中,或者它可能在您的启动脚本或您使用的任何内容中启动JVM。你正在寻找一个看起来像-Xdebug -Xrunjdwp:server=y, transport=dt_socket,address=#number#, suspend=n的字符串。删除所有这些,注释掉它,或者任何适合它的地方,然后重新启动你的JVM。

答案 2 :(得分:1)

  

这是什么意思?

消息来自Java Service Wrapper。包装器试图“ping”JVM并且没有得到任何响应。它很可能意味着您正在调试JVM并暂停它。当JVM暂停时,它无法响应任何类型的外部请求。所有线程都被冻结......

  

它似乎会阻止来自外部的任何网络请求?因为当我上传文件时,它失败了。帮助我

是的,如果您暂停JVM,它会这样做。取消暂停JVM,它应该再次开始响应。

请注意,如果在调试模式下从IDE启动应用程序,JVM可能会以暂停状态启动...具体取决于您的IDE设置/启动配置。


我能想到的唯一其他解释是您的网络或虚拟网络配置(例如数据包过滤器或虚拟网络路由)可能会导致网络数据包大规模丢失。

相关问题