上游 · Kotlin/Native memory management
Selects the Kotlin/Native memory model. When unset, CPF defaults to STRICT in KonanConfig.
全部配置 / KN-BINARY-MEMORYMODEL
Xbinary=memoryModel · KN-BINARY-MEMORYMODEL · 编译器参数(Native) · 同源入口 memory-model
待解决问题。文档缺口:此项相对上游有改动,但尚未挂接社区文档。社区差异(取值/默认/目标限制等)应有对应说明后再挂链。
默认值:strict。未指定时默认 strict(KonanConfig 默认值)。使用场合:场景可配。场景可配:有明确目标(性能、包体、安全、兼容)时再改。
用途。选择内存模型(影响并发与对象语义)。KonanConfig 显式读取该选项;未指定时默认 MemoryModel.STRICT。
影响。影响回收策略、停顿、分配路径与内存表现;须与目标及 runtime 构建匹配,非法组合可能在编译期直接报错。
适用场景。场景可配。有明确需求再改,无需求时保持发行版默认更稳妥。改前核对目标限制与联动项,改后做冒烟。
约束与联动。相对上游:在 KonanConfig 中显式读取 BinaryOptions.memoryModel;未指定时默认 MemoryModel.STRICT。(注:Legacy MM 已不可用;experimental 路径会警告 deprecated。)
| 可写取值 | 含义 | 使用场景 |
|---|---|---|
strict | 严格内存模型 | 社区侧未指定时 KonanConfig 常默认 STRICT;按并发/对象语义需求选择 |
relaxed | 宽松内存模型 | 需要更宽松并发语义时;切换后做并发冒烟 |
experimental | 实验性内存模型 | 实验/对比;勿默认带入发布基线 |
含义/场景依据:MemoryModel.STRICT;sanitize UPSTREAM / KonanConfig 约定; MemoryModel.RELAXED; MemoryModel.EXPERIMENTAL
定义依据:konan/BinaryOptions.kt 在仓库中打开; konan/MemoryModel.kt 在仓库中打开
// 文件:build.gradle.kts(应用的 Kotlin 模块,例如 composeApp)
kotlin {
ohosArm64 { // 按实际 native target 调整
binaries.all {
freeCompilerArgs += "-Xbinary=memoryModel=true"
}
}
}
应用工程只按上方「怎么用」里的 Gradle 示例配置。下面列出编译器还认识的旧名字,避免对着旧文档混用。
优先级:同时指定时 -Xbinary=memoryModel 优先;二者最终都写入 BinaryOptions.memoryModel。
-Xbinary=memoryModel=<model>(键 Xbinary=memoryModel) — 应用工程用 binaries.all { freeCompilerArgs += "-Xbinary=memoryModel=…" }。-memory-model <model>(键 memory-model) — 专用 CLI,已 deprecated;仅当未设 -Xbinary=memoryModel 时回填同一内部键。不写这个配置时,编译器会怎么处理?
此选项有固定默认取值(见下方说明),不设置时编译器使用该默认值。
未指定时默认 strict(KonanConfig 默认值)。
以下摘抄原文中与本配置最相关的段落,便于速读;完整上下文请点原文。
Selects the Kotlin/Native memory model. When unset, CPF defaults to STRICT in KonanConfig.