You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OptaPy学校排课快速入门在M1 Mac Mini上运行崩溃求助

解决M1 Mac上OptaPy排课程序JVM崩溃(SIGBUS in CodeHeap::allocate)问题

问题背景

在M1芯片的Mac Mini上运行OptaPy学校排课快速入门程序时,JVM抛出致命错误:

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGBUS (0xa) at pc=0x00000001027fbe30, pid=2724, tid=259
#
# JRE version:  (20.0.1) (build )
# Java VM: OpenJDK 64-Bit Server VM (20.0.1, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, bsd-aarch64)
# Problematic frame:
# V  [libjvm.dylib+0x367e30]  CodeHeap::allocate(unsigned long)+0x1c0
#

同一设备上OptaPlanner快速入门程序可正常运行,排除基础JDK环境问题(使用brew安装的OpenJDK 20.0.1),程序在Windows/Ubuntu可正常运行。

解决方案

  • 调整JVM代码堆相关参数
    在运行OptaPy程序时添加以下JVM参数,缓解代码堆分配压力:

    -XX:ReservedCodeCacheSize=256m -XX:InitialCodeCacheSize=128m -XX:-TieredCompilation
    

    增大代码缓存预留空间,关闭分层编译,避免JIT编译时的内存分配冲突。

  • 切换到LTS版本JDK
    brew提供的OpenJDK 20(非LTS)在arm64架构下可能存在兼容性bug,建议切换到OpenJDK 17(LTS):

    brew install openjdk@17
    

    配置环境变量指向该版本(例如在~/.zshrc中添加export PATH="/usr/local/opt/openjdk@17/bin:$PATH"),之后重新运行程序。

  • 匹配OptaPy与OptaPlanner版本
    确保使用的OptaPy版本和当前正常运行的OptaPlanner版本完全一致,版本不匹配可能导致底层JVM交互异常。

  • 禁用压缩指针(备选)
    如果上述方法无效,尝试关闭JVM的压缩指针特性:

    -XX:-UseCompressedOops -XX:-UseCompressedClassPointers
    

    错误信息中显示当前开启了这两个特性,部分场景下arm64架构与OptaPy的结合会触发内存访问错误。

内容的提问来源于stack exchange,提问作者Remo R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 15:37:33