Programming and Data Types    

メモリ使用に関する注意

この節は、メモリを保護したり、メモリの使い方を改良する方法を議論します。

メモリ管理関数

MATLABは、メモリの取り扱いを行なう5つの関数を用意しています。

いくつかのシステムにおいて、whosコマンドは、残っているフリーメモリの総量を表示します。しかし、つぎのことは、知っておいてください。

メモリから関数の削除

MATLABは、起動時に、matlab/toolboxディレクトリの下に位置するすべてのファイルに対するM-ファイルとMEX-ファイルの一覧表を作成します。この表は、メモリにストアされ、関数pathで読み込まれ新しい一覧表が作成されるときのみに書き換えられます。ファンクション M-ファイルコードとMEX-ファイルで再設定されたコードは、対応する関数が読み込まれたとき、メモリにロードされます。M-ファイルコード、または、再割り当てされるコードは、つぎの場合にメモリから削除されます。

入れ子になった関数の読み込み

入れ子になった関数により使われるメモリの総量は、それらを連続的に読み込んで使うメモリの総量と同じです。つぎの二つの例題は、同じメモリを必要としています。

変数とメモリ

メモリは、代入式の中の左辺変数がメモリ内に存在しないときは、いつでも変数に対して割り当てられます。ステートメント

は、メモリを割り当てますが、ステートメント

は、xの10番目の要素が存在するなら、メモリの割り当ては行ないません。

メモリを保護するため、

変数とメモリ

メモリは、代入式の中の左辺変数がメモリ内に存在しないときは、いつでも変数に対して割り当てられます。ステートメント

は、メモリを割り当てますが、ステートメント

は、xの10番目の要素が存在するなら、メモリの割り当ては行ないません。

メモリを保護するため、

グローバル変数   変数をglobalとして宣言することは、単にシンボルテーブルの中でフラグが付くだけです。これは、グローバル変数を定義しないものより多くのメモリを使うものではありません。つぎの例題を考えましょう。

さて、MATLABワークスペースの中にaのコピーを一つストアしたものです。つぎのようにタイプインします。

は、MATLABワークスペースからaを取り除きます。しかし、global ワークスペースの中には、まだ存在しています。

により、グローバルワークスペースより削除されます。

PC固有の事柄

UNIX固有の事柄

一方、つぎのステートメントは、約16.4MBのRAMを使います。

まず、最長ベクトルを割り当てることは、利用可能なメモリの最適な使用を行なうことになります。

メモリアウトが意味するものは?

Out of Memoryメッセージは、MATLABがカレントで利用可能なものよりも多くのメモリをオペレーテングシステムに要求したために生じるものです。この節で議論されているいくつかの手法を使って、利用可能なメモリを最適化するようにしてください。Out of Memoryメッセージが表示されたなら、

のいずれかを行なってください。


  配列を前もって割り当てる キャラクタ配列(文字列)