我看到 Java 客户端应用程序在现场崩溃,我认为这是因为它连接的服务器经历了 12 秒的完整 GC 暂停。但是,当我尝试在 Eclipse 中本地运行客户端/服务器并使用kill -STOP 和kill -CONT 重现行为以模拟服务器上的GC 暂停时,我无法让客户端应用程序崩溃--它只是旋转直到我杀死-继续。
我想弄清楚 GC 暂停是否确实是问题所在(如果不是,我需要深入研究代码以查看其他情况)。经历长时间 GC 暂停和接收kill -STOP 后接kill -CONT 之间的行为是否有区别?
当然是有区别的。至少,垃圾收集器在 GC 暂停期间正在操作和解析对象,而在 GC 暂停期间则不会这样做。kill -STOP
.
此外,垃圾收集器将调用终结器,这可能是您的崩溃错误所在的位置,并且此行为无法通过以下方式复制kill -STOP
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)