仮想メモリがWind​owsPC設定値より​も大きい理由

5 views (last 30 days)
osamu
osamu on 12 Jul 2023
Answered: Kojiro Saito on 13 Jul 2023
演算中にメモリが足りないというエラーが出ており、扱っている変数サイズとPCの使用可能なスペックを確認したのですが、
feature memstatsを実行した結果が以下のように返ってきました
Physical Memory (RAM):
In Use: 8297 MB ( 206945000)
Free: 7966 MB ( 1f1e12000)
Total: 16263 MB ( 3f8757000)
Page File (Swap space):
In Use: 54617 MB ( d55952000)
Free: 10052 MB ( 2744bc000)
Total: 64670 MB ( fc9e0e000)
Virtual Memory (Address Space):
In Use: 54102 MB ( d356c5000)
Free: 134163625 MB (7ff2ca91b000)
Total: 134217727 MB (7ffffffe0000)
Largest Contiguous Free Blocks:
1. [at 1c74e13f000] 132304390 MB (7e2ce0601000)
2. [at 1c2a000000] 1697120 MB (19e56000000)
3. [at 18005a000] 108970 MB ( 1a9aa76000)
4. [at 7ff7a4de0000] 28915 MB ( 70f3d0000)
5. [at 7ff53094b000] 10052 MB ( 274465000)
6. [at 1bb2bc19000] 5598 MB ( 15de47000)
7. [at 7fff3e9c8000] 3094 MB ( c1627fff)
8. [at 0] 1495 MB ( 5d710000)
9. [at 140000000] 1024 MB ( 40000000)
10. [at 7ffec000] 896 MB ( 38014000)
======= ==========
134161556 MB (7ff24943efff)
VirtualMemoryのTotalやLargest Contiguous Free Blocksの最大容量が100TBを超える容量を扱えると出てくるのですが、PCの実装RAMはたかが16GB、仮想メモリは50GB程度でHDD容量全体も500GBしかありません。
メモリ不足回避のためPCスペック上扱える値を確認したかったのですが、なぜPCのハードウェア容量を大幅に超えるようなデータが扱える結果となるのでしょうか。
教えてください。

Answers (1)

Kojiro Saito
Kojiro Saito on 13 Jul 2023
各 Largest Contiguous Free Blocks は、一つの変数が使用できる最大メモリを示しています。ただ、Page File (Swap space):Freeの容量が、Largest Contiguous Free Blocksの最大容量(この例の場合は 8378158 MB)よりも小さい為、Page File (Swap space):Free の容量を超えるサイズの変数を定義するとメモリエラーが発生します。
Windows 64bit OS上で一つの変数を定義する場合、Page File (Swap space):Freeの容量を考慮した変数のサイズを設定する必要があります。
なお、Page File (Swap space):Freeの容量は、演算の処理に使用されますので、Page File (Swap space):Freeの容量と同じサイズの変数を定義するとメモリエラーになりますので、注意が必要です。
Virtual MemoryのTotalや Largest Contiguous Free Blocksは理論的に使用できるメモリサイズですが、実際の上限はマシンのスペックに依存する、という理解です。

Categories

Find more on 環境と設定 in Help Center and File Exchange

Products


Release

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!