[返回博客](/cn/blog) # BimRv SDK: 使用卸载模式

Yury Lebedev 六月 30, 2023 [\#rvt](/cn/blog/tag/rvt) [\#rfa](/cn/blog/tag/rfa)

<a class="a2a_button_facebook"></a><a class="a2a_button_twitter"></a><a class="a2a_button_linkedin"></a>

一种特殊的卸载模式可减少文件加载和使用 BimRv API 进行后续工作时的内存使用量。默认情况下，所有文件元素在从文件流中初始读取后都保留在内存中，但此模式会将它们序列化回特殊的存储空间，并在打开元素时从中提取。此功能可将内存使用量减少近一半，但可能会在文件加载期间导致严重的性能下降。

启用卸载模式还意味着对所有使用 API 打开的元素使用智能指针。通常建议使用智能指针，但对于卸载模式而言，这至关重要，因为如果使用原始指针处理，打开的元素会立即释放。

BimRv SDK 包含用于卸载模式的方法。例如，要检查卸载模式是否已启用，请调用 unloadEnabled() 方法。unloadCondition() 方法允许您创建文件卸载的条件。

要检查 unloadCondition() 函数是否可以缓存，请调用 unloadCoditionCanBeCached() 方法。

此外，OdRxSystemServices 扩展有一个选项可以将存储重定向到文件并指定数据同步速率。要检查是否可以重定向，请调用 useDisk() 方法，如果它返回 true，则使用 unloadFilePath() 方法卸载文件路径。要自定义索引速率，请使用 indexingRate() 方法。

默认情况下，卸载模式处于关闭状态。请注意，如果已使用 BimRv SDK 打开任何文件，则不应更改卸载模式选项。

可以在 BimRv/Extensions/ExServices/ 目录中找到一个示例扩展，其中包括名为 ExBimSystemServicesPE 的头文件和源文件，其中包含实现。此示例实现允许您在 OdaBimApp 中启用卸载模式。

COdaBimApp 类本身包含所有必要的 ODA 服务，但每个服务都可以由独立的实现表示。

```
class COdaBimApp : public CWinApp
                 , public OdRxObjectImpl<ExSystemServices>
                 , public OdRxObjectImpl<OdExBimHostAppServices>
                 , public OdRxObjectImpl<ExBimSystemServicesPE>
                 , public OdExBimHostAppProgressMeter
```

任何自定义实现都应在加载 OdBmLoaderModuleName 模块之后但在打开文件之前注册为 OdRxSystemServices 协议扩展。

```
// Initialize Runtime Extension environment
odrxInitialize(this);

// Load ODA BimRv modules
::odrxDynamicLinker()->loadModule(OdBmBaseModuleName);
::odrxDynamicLinker()->loadModule(OdBmLoaderModuleName, false);

// Disable Unloading mode initially
setUnloadEnabled(false);
setUseDisk(false);
OdRxSystemServices::desc()->addX(OdBmSystemServicesPE::desc(), static_cast<OdBmSystemServicesPE*>(this));
```

在 OdaBimApp 中，选择“文件”&gt;“卸载模式”以选择两个卸载选项：是否在使用后从内存中卸载对象，以及是否将临时数据缓存到磁盘。如果任一选项打开，则启用卸载模式。请注意，由于其实现，如果文件已打开，您无法更改任何卸载选项。

在[我们的文档](https://docs.opendesign.com/tbim/bimrv_unload.html)中了解更多信息。

## 今天就开始行动

**免费试用 ODA 软件 60 天。  
无风险，无需信用卡。**

[免费试用](https://www.opendesign.com/cn/free-trial)
