特別なアンロードモードは、ファイルのロード中および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では、[ファイル] > [アンロードモード] を選択して、2つのアンロードオプションを選択します。使用後にメモリからオブジェクトをアンロードするかどうか、および一時データをディスクにキャッシュするかどうかです。いずれかのオプションがオンになっている場合、アンロードモードが有効になります。実装の都合上、ファイルが開いている場合はアンロードオプションを変更できないことに注意してください。
詳細については、当社のドキュメントをご覧ください。