4

なぜMatlabがスワップを使用せず、代わりに「メモリ不足」というエラーをスローするのか疑問に思っていましたか?

「メモリ不足」をスローする代わりに、Matlab を遅くするべきではありませんか?

これはJavaに関連していますか?

追加

「メモリ不足」とは、連続したメモリが不足していることを意味します。スワップには連続したメモリがありませんか? よくわかりません...

4

1 に答える 1

6

MATLAB についてではありません。ハードウェアに存在するよりも多くのメモリを割り当てようとするとどうなるかは、OS 固有の動作です。

Linux では、デフォルトで、OS は必要なほとんどすべてを「楽観的に」割り当てます。つまり、スワップ スペースも割り当て可能なメモリとしてカウントされます。必要なものが得られます-OOMエラーはありませんが、スワップ割り当てデータの計算は遅くなります。この「機能」はオーバーコミットと呼ばれます。Linux のオーバーコミット設定を変更することで、この動作を変更できます (簡単な概要については、こちらを参照してください)。

オーバーコミットは、OS 全体の動作が非常に遅くなるため、MATLAB でより大きな問題を解決するためにこれを使用するのはおそらく最善の方法ではありません。計算でハードディスクを意識的に使用する、最適化された「アウトオブコア」実装と比較することは絶対にできません。

Linux ではこのようになっています。Windows でメモリ割り当ての動作を変更する方法はわかりませんが、本当にそうしたいとは思いません。より多くの RAM が必要です。

そして、あなたは物事を混乱させます-スワップは連続したメモリとは何の関係もありません。OS によって割り当てられるメモリは「仮想メモリ」であり、基礎となる物理メモリを連続したページにマップできるかどうかに関係なく、連続しています。

編集ディスクスペースを追加メモリとして使用する大きなマトリックスでの透過的な「コア外」操作については、VVAR fileexchange projectを確認することをお勧めします。このクラスは通常の MATLAB クラスのふりをしていますが、基になる HDD ファイルを操作します。MATLABの通常の配列サイズの制限が引き続き適用されることに注意してください。

于 2012-09-17T08:24:48.823 に答える