3

アプリケーションをスタンドアロンの Matlab 実行可能ファイルとしてクライアントに配信する必要があります。コードには、複数の cell 配列を内部的に作成する関数への一連の呼び出しが含まれています。

私の問題は、ユーザー負荷の増加に応じてこの関数の呼び出し数が増加すると、メモリ不足エラーが発生することです。ワークスペース変数はループ数から独立しているため、これは低レベルのメモリ断片化であると思います。

hereで述べたように、Matlab を終了して再起動することが、現時点でこのタイプのメモリ不足エラーの唯一の解決策です。

私の質問は、データを保存し、メモリ不足エラーが発生した場合 (またはそのようなエラーの可能性が高いと予測された場合) にそれ自体を終了して再起動するために、スタンドアロン アプリケーションにそのようなメカニズムをどのように実装できるかということです。

利用可能なベストプラクティスはありますか?

ありがとう。

4

2 に答える 2

2

もう 1 つのオプションは、chkmemなどの関数を使用してメモリの断片化を定期的にチェックすることです。

この関数を統合して、数回の反復ごとにコードからサイレントに呼び出されるようにするか、timerオブジェクトを使用して X 分ごとに呼び出すことができます...

これらの文書化されていない関数を使用して、現在割り当てられている最大の変数に加えて、利用可能な最大の空きメモリ ブロックを取得するという考え方feature memstatsですfeature dumpmem。これを使用して、メモリの断片化の兆候があるかどうかを推測できます。

検出された場合は、ユーザーに警告し、現在のセッションを保存 (MAT ファイルにエクスポート) する方法、アプリを再起動する方法、および再起動時にセッションを復元する方法をユーザーに指示します。

于 2013-04-25T13:32:06.947 に答える