编程语言
首页 > 编程语言> > java-GC暂停并杀死-STOP会产生相同的行为吗?

java-GC暂停并杀死-STOP会产生相同的行为吗?

作者:互联网

我在现场看到Java客户端应用程序崩溃,我认为这是因为所连接的服务器经历了12秒钟的完整GC暂停.但是,当我尝试在Eclipse之外本地运行客户端/服务器并使用kill -STOP和kill -CONT在服务器上模拟GC暂停来重现该行为时,我无法使客户端应用程序崩溃-它只会旋转直到我杀死-CONT.

我想弄清楚GC暂停是否实际上是问题所在(否则,我需要深入研究代码以查看可能发生的其他情况).在经历长时间的GC暂停和接收kill -STOP之后再执行kill -CONT之间,行为上是否有区别?

解决方法:

当然有区别.至少,垃圾收集器在GC暂停期间正在操作和解析对象,而在kill -STOP期间则没有这样做.

此外,垃圾收集器将调用终结器,终结器可能是崩溃错误所在的位置,并且该行为无法通过kill -STOP复制.

标签:jvm,kill,linux,java,garbage-collection
来源: https://codeday.me/bug/20191122/2063416.html