根据Java官方发布的文章,由于macOS上运行的进程可能会访问受保护内存区域中的内存。在 macOS 14.4 更新之前,在某些情况下,macOS 内核会通过向进程发送信号 SIGBUS 或 SIGSEGV 来响应这些受保护的内存访问。然后该进程可以选择处理该信号并继续执行。而在最新 macOS 14.4 中,当线程在写入模式下运行时,如果尝试对受保护的内存区域进行内存访问,macOS 将发送信号SIGKILL。该进程无法处理该信号,并且该进程将无条件终止。
目前该问题主要受影响的Mac机型和Java版本包括:
- Mac机型:M1、M2、M3(Apple Silicon m* 芯片)
- Java版本:Java 8 - Java 22 所有版本
如果还在使用Intel芯片的话,这次不受影响。
在x上,Java开发领域的一些大v们,也发现了这个问题,并提醒大家不要升级。
其他资料