M 系列的 Mac 电脑
启动基于 java 的 IDE编辑器(PhpStorm 、WebStorm、IDEA 、CLion …)的时候报错[libjvm.dylib+0x45b8a4] CodeHeap::allocate(unsigned long)+0x1a4
修复方法
一、如果你不需要禁用 SIP,则通过恢复模式开启 SIP即可修复(具体如何开启,请网络搜索)。
二、如果你必需要禁用 SIP,则往下看
打开终端工具,输入nvram -xp ,查看boot-args 中相关的参数。
以下是部分参数的解释
1. -v作用:启用 Verbose 模式。
说明:启动时不显示苹果 logo 进度条,而是显示详细的文本日志(内核、驱动加载信息)。常用于调试启动问题。2. cs_enforcement_disable=1
作用:禁用系统完整性保护(SIP)的部分功能。
说明:cs 指 Code Signing(代码签名)。
正常情况下,macOS 会阻止运行未签名的内核扩展(kext)或修改系统文件。
此参数允许加载未签名的内核扩展或修改受保护的系统分区。
3. amfi_get_out_of_my_way=1
作用:禁用 Apple Mobile File Integrity(AMFI)。
说明:AMFI 是 macOS 的安全子系统,负责强制执行代码签名。
此参数会绕过 AMFI 的检查,允许运行未签名的代码(常用于黑苹果或调试)。
4. keepsyms=1
作用:在内核崩溃时保留符号信息。
说明:当内核崩溃(出现 Kernel Panic)时,会显示完整的函数名和地址(而非模糊的十六进制地址),便于调试。
5. intcoproc_unrestricted=1
作用:解除对英特尔协处理器(Intel Coprocessor)的限制。
说明:允许系统访问某些特定的硬件功能(如 Intel GPU 加速),在黑苹果中可能用于绕过兼容性限制。
6. amfi_unrestrict_task_for_pid=1
作用:允许通过 task_for_pid() API 访问其他进程的内存空间。
说明:通常用于调试工具(如 LLDB)或逆向工程,可绕过沙盒限制访问其他进程。
7. amfi_allow_any_signature=1
作用:允许加载任何签名的代码(包括无效签名)。
说明:
AMFI 通常只允许 Apple 官方或开发者签名的代码,此参数放宽签名检查(例如允许过期或自签名证书)。
8. cs_debug=1
作用:启用代码签名调试信息。
说明:在内核日志中输出代码签名的详细验证过程,用于诊断签名相关问题。
9. ipc_control_port_options=0
作用:禁用进程间通信(IPC)控制端口的部分安全限制。
说明:可能用于允许某些低层级的进程间通信(例如调试或内核扩展通信)。
部分基于 Chrome 的软件打开闪退,网上大部分的解决办法都是添加ipc_control_port_options=0
如果你现在的 boot-args是 ipc_control_port_options=0 -arm64e_preview_abi 则基于 Java 的软件全部可用,不会出现闪退。
大部分人的问题在于参数 amfi_get_out_of_my_way=1。往往许多人的电脑中,boot-args 是设置了这个参数的。问题就出在这个参数上,有些 MacOS 版本是不会有问题的,还有基于 x86 CPU的 Mac 系统也不会出现闪退。
折中方案,是将amfi_get_out_of_my_way=1 替换为 amfi_allow_any_signature=1。
这样你的 boot-args 参数最后大概是这个样子 ipc_control_port_options=0 amfi_allow_any_signature=1 -arm64e_preview_abi
最合理解决方案: 终端中输入 sudo nvram boot-args="ipc_control_port_options=0 amfi_allow_any_signature=1 -arm64e_preview_abi"
重启电脑。
这样基于 Chrome 和 Java 的软件即可以全部正常使用。

共 0 条评论