我们可以禁用JVM心跳还是防止它杀死我的小程序



我的小程序意外终止。从日志中,我可以看到

JVM检测信号。。死亡,发送ts:654648654666,现在ts:654658163729,dT 9998263

我有一个关闭挂钩,看看谁在扼杀小程序&我得到了以下

堆栈跟踪。。。。。。。。。线程[Java插件心跳线程,5,main]

java.lang.Object.wait(Native Method)
java.lang.Thread.join(Unknown Source)
java.lang.Thread.join(Unknown Source)
java.lang.ApplicationShutdownHooks.runHooks(Unknown Source)
java.lang.ApplicationShutdownHooks$1.run(Unknown Source)
java.lang.Shutdown.runHooks(Unknown Source)
java.lang.Shutdown.sequence(Unknown Source)
java.lang.Shutdown.exit(Unknown Source)
java.lang.Runtime.exit(Unknown Source)
java.lang.System.exit(Unknown Source)
sun.plugin2.main.client.PluginMain.exit(Unknown Source)
sun.plugin2.main.client.PluginMain.access$1300(Unknown Source)
sun.plugin2.main.client.PluginMain$HeartbeatThread.run(Unknown Source)

我不明白为什么心跳线程在这里工作。我没有多个jvm&它是一个没有任何套接字通信的小应用程序。只有数据传输到服务器是通过http

从PluginMain的源代码来看,我们可以通过将环境变量JPI_PLUGIN2_NO_HEARTBEAT设置为某个值来阻止HeartBeatThread启动

http://www.javasourcecode.org/html/open-source/jdk/jdk-6u23/sun/plugin2/main/client/PluginMain.java.html

最新更新