Matlabが仮想メモリの使用を開始すると、表示される問題が発生します。通常、Task Managerを介してMatlabプロセスを終了することができますが、必ずしもそうとは限りません。残念ながら、最大の配列サイズをグローバルに制限する単純なMatlab内部スイッチはありません。
あなたができることは、スワップファイルのサイズを非常に小さくすることです。そのため、Matlabは実際にはそれほど多く書くことはできませんが、これは他のプログラムのパフォーマンスに影響を与える可能性があります。他のMatlab以外のソリューションは、Linuxに切り替えることです(プログラムのメモリ制限をより簡単に設定でき、setting limits on both Windows and Linuxの詳細については、@ BenVoigtの回答を参照)、またはすべてを仮想マシンで実行することです。
私のシミュレーションでは、シミュレーションパラメータを使用した場合の推定メモリ使用量を計算する事前割り振りの開始時に、メソッド(サブ関数、OOPを実行したくない場合)があります私は2倍のために時間8を使用するすべての大きな配列の要素の数はバイト単位のメモリです)、それはあまりにも多くのRAMを使用するとエラーをスローします。
ここでは、簡単なメモリチェックの例を示します。私は3m×3xアレイと5m×tアレイを割り当てようとしていることを知っています。
maxMemFrac = 0.8; %# I want to use at most 80% of the available memory
numElements = 3 * (m * 3 * t) + 5 * (m * t);
numBytesNeeded = numElements * 8; %# I use double
%# read available memory
[~,memStats] = memory;
if numBytesNeeded > memStats.PhysicalMemory.Available * maxMemFrac
error('MYSIM:OUTOFMEMORY','too much memory would be needed')
end
ジョナス参照してください、その答えに感謝は、あなたがここにあなたのRAM-電卓-法を使用して/作っているかをより詳細に記述することができますか?私はそれを使うことができればそれが実行可能な解決策になると私は思う。ありがとう。 – Spacey
Linuxに切り替えますか?われわれが知っている限り、彼はすでにLinuxを走らせている可能性があります –
@BenVoigt私はWindowsマシン上で、Lunixへの切り替えは現時点で実現可能かもしれないとは思わない。 – Spacey