ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

メモリ不足エラーの解決

メモリの再使用に関する一般的な提案

MATLAB® ソフトウェアは、64 ビット オペレーティング システム上で稼働する 64 ビット アプリケーションです。オペレーティング システムに対して使用可能なメモリより大きなセグメントを要求する場合、Out of Memory メッセージが生成されます。Out of Memory メッセージが表示された場合は、次を含む、メモリを効率的に使用するための対策で説明されている手法のいずれかを使用して、使用可能なメモリ量を最適化します。

  • 必要なメモリの削減

  • 適切なデータ ストレージの選択

  • 連続メモリの使用

  • 使用されたメモリの再使用

それでも Out of Memory メッセージが表示される場合は、次のいずれかを試してください。

  • 可能であれば、データ サイズを小さくする。たとえば、大きな行列をいくつかの小さな行列に分割し、一度に使用する量を小さくします。

  • サイズの大きいファイルとデータセットがある場合は、大きなファイルとビッグ データを参照してください。

  • MATLAB でアクセス可能なメモリに関する外的制約がないことを確認する。Linux® システムでは、確認のために limit コマンドが使用されます。

  • スワップ ファイルのサイズを大きくする。システムでは、RAM の 2 倍のスワップ スペースを設定することをお勧めします。詳細については、システムのスワップ スペースの拡大を参照してください。

  • システムにメモリを追加する

システムのスワップ スペースの拡大

コンピューター上のアプリケーションで使用可能な総メモリは、ディスク上の物理メモリ (RAM) と、"ページ ファイル"、すなわち "スワップ ファイル" で構成されます。スワップ ファイルは非常に大きくなることがあります (たとえば、64 ビット Windows® 上で 512 テラバイト)。オペレーティング システムでは、システム自体と他のプロセスのニーズに応じて、各プロセスの仮想メモリが物理メモリまたはスワップ ファイルに割り当てられます。

ほとんどのシステムでは、スワップ ファイルのサイズを制御できます。必要な手順は、オペレーティング システムによって異なります。

  • Windows システム — Windows のコントロール パネルを使用して、システムにおける仮想メモリ ページング ファイルのサイズを変更します。詳細は、Windows のヘルプを参照してください。

  • Linux システム — スワップ スペースは、mkswap コマンドと swapon コマンドを使用して変更できます。詳細を表示するには、Linux プロンプトで「man」と入力し、コマンド名を続けます。

macOS システムには、スワップ領域を直接制御するインターフェイスはありません。

Linux システムにおけるプロセス リミットの設定

"プロセス リミット" は、1 つのプロセス (またはアプリケーション) で扱うことができる仮想メモリの最大量です。プロセス リミットは、次に対応するために十分に大きくしなければなりません。

  • 処理するすべてのデータ

  • MATLAB プログラム ファイル

  • MATLAB の実行可能ファイル自体

  • 追加の状態情報

64 ビット オペレーティング システムは、8 テラバイトのプロセス リミットをサポートしています。Linux システムで、仮想メモリを含むユーザー リミットを表示および設定するには、ulimit コマンドを参照してください。

Linux システムでの Java VM の無効化

Linux システムで、Java® JVM™ を使用せずに MATLAB を起動すると、使用可能なワークスペース メモリを約 400 メガバイト増やすことができます。Java JVM を使用せずに MATLAB を起動するには、コマンド ライン オプション -nojvm を使用します。このオプションは、最大連続メモリ ブロックのサイズも同じぐらい増やします。最大連続メモリ ブロックを増やすことで、最大行列サイズも可能な限り増やせます。

-nojvm を使用すると、開発環境全体も含めた、Java ソフトウェアに依存する多くの機能が失われるという不利な点があります。-nodesktop オプションを使用して MATLAB を起動しても、あまりメモリの節約にはなりません。

Windows システム上のシステム リソースの解放

MATLAB には、MATLAB が Microsoft® Windows システムのリソースを処理する方法を操作する関数はありません。Windows システムは、これらのリソースを使用して、フォント、ウィンドウ、スクリーン オブジェクトを追跡します。たとえば、複数の Figure ウィンドウ、複数のフォントまたは複数の UI コントロールを使用すると、リソースが消費されます。システム リソースを解放する方法の 1 つは、使用していないウィンドウをすべて閉じることです。Windows システム アイコンでもリソースが消費されます。

合計システム メモリが制限要因の場合、他のアプリケーションとサービスをシャットダウンすると役立つことがあります (たとえば、Windows システム上で msconfig を使用する)。ただし、通常は、プロセス リミットがメインの制限要因です。

参考

関連するトピック