Clear Filters
Clear Filters

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

26 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は理論的に使用できるメモリサイズですが、実際の上限はマシンのスペックに依存する、という理解です。

Products


Release

R2021a

Community Treasure Hunt

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

Start Hunting!