---
title: （可选）内存借用
description: "如果在启动参数中已经配置了堆外内存，请跳过本章节。如果因为特殊情况无法在启动参数中配置堆外内存，可以按照如下步骤操作。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/2530/bds/kunpengbds_omniruntime_20_0240.html
sourcePath: /source/zh/kunpengboostkithistory/2530/bds/kunpengbds_omniruntime_20_0240.html
indexId: b3b7ad225b72f5d091c52a89c7050764bfb3c66bdad006eb161b7da2621b0ad378
---
# （可选）内存借用

如果在启动参数中已经配置了堆外内存，请跳过本章节。如果因为特殊情况无法在启动参数中配置堆外内存，可以按照如下步骤操作。

1. 复制parse_para.sh(https://gitee.com/kunpengcompute/boostkit-bigdata/blob/main/tools/parse_parameter/parse_para.sh)脚本到“${SPARK_HOME}/bin/”目录下。
2. 修改parse_para.sh权限。

```
chmod 550
${SPARK_HOME}
/bin/parse_para.sh
```


3. 打开spark-submit脚本文件。

```
cd
${SPARK_HOME}
/bin/
vi spark-submit
```


4. 按“i”进入编辑模式，替换最后一行内容。

```
exec 3< <(bash "${SPARK_HOME}/bin/parse_para.sh" "$@")
mapfile -t new_args <&3
pid=$!
wait $pid
ret=$?
if [  $ret -eq 2 ]; then
exec "${SPARK_HOME}"/bin/spark-class org.apache.spark.deploy.SparkSubmit "$@"
else
exec "${SPARK_HOME}"/bin/spark-class org.apache.spark.deploy.SparkSubmit "${new_args[@]}"
fi
```


5. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
6. 增加启动参数。

```
--conf spark.omni.enableBorrow=true --conf spark.omni.borrowMemory.Fraction=90
```


**表1 参数说明**

| 参数名称 | 默认值 | 参数说明 |
| --- | --- | --- |
| spark.omni.enableBorrow | false | 控制内存借用特性是否开启。true表示开启内存借用特性，false表示关闭内存借用特性。 |
| spark.omni.borrowMemory.Fraction | 90 | 堆外内存借用堆内内存的比例，默认为90%。如果运行时报错堆内内存不足，则减小此参数。如果运行时报错堆外内存不足，则增大此参数。 |


  如果原本参数中设置了spark.memory.offHeap.enabled为true，则无法开启内存借用，需修改此参数为false后再开启内存借用。 --conf spark.memory.offHeap.enabled=false 不支持读取spark-default.conf文件中的executor-memory。 如果原本参数中未配置executor-memory大小，无法使用内存借用特性。
