OOM(Out of Memory)后,服务直接挂掉,需要重启 这篇文章主要讲述了JVM中的错误处理机制,核心内容是: 1. JVM遇到 OutOfMemoryError 或 StackOverflowError 不一定会退出 - 这些错误可以被catch捕获 - 一个线程崩溃不会影响其他线程 - JVM会隔离单个线程的问题 1. 错误处理过程 - 操作系统发现内存访问错误,发送SIGSEGV信号 - JVM拦截并处理这些信号 - 转换成Java中的Error抛给用户 1. 实际崩溃的情况 - 未注册处理函数的信号会导致JVM退出 - 某些JVM参数配置(如OnOutOfMemoryError)可以强制JVM在OOM时退出 简单说,就是JVM像个保护层,把系统级的严重错误转换成Java可处理的错误,让程序有机会恢复而不是直接崩溃。