直接检查Java调用栈,查看是哪个方法触发了溢出。注意,JVM可能不会完全打印所有栈帧,可以通过设置-XX:MaxJavaStackTraceDepth=-1来获取完整的栈信息。
分析Crash日志,查看"Current thread"的栈范围和RSP寄存器的值。如果RSP值超出了栈范围,说明是栈溢出导致崩溃。
如果没有Crash日志,可以依赖核心转储文件进行分析。在程序运行前设置ulimit -c unlimited来允许核心转储,然后使用jstack $JAVA_HOME/bin/java core.来分析栈信息,检查是否有异常长的调用链。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。