[转]MATLAB out of memory

运行LTE仿真平台的时候遇到out of memory的问题,上网学习了一会,找到了一些解决方法,这里总结一下。

Out of memory的产生,总的来说,是由于程序运行过程中不断对内存进行读写,造成连续的内存段变少。这里主要学习一些非程序改进的方法,通过对系统的设置解决这个问题。

1.  如何在MATLAB中查看可用内存?

在MATLAB的command window中输入feature ('memstats'),可以得到如下的结果:

 
    Physical Memory (RAM):
        In Use:                             1499 MB (5dba0000)
        Free:                               1571 MB (6237e000)
        Total:                              3071 MB (bff1e000)
    Page File (Swap space):
        In Use:                             1694 MB (69e67000)
        Free:                               4446 MB (115e1e000)
        Total:                              6140 MB (17fc85000)
    Virtual Memory (Address Space):
        In Use:                              633 MB (279fe000)
        Free:                               1413 MB (585e2000)
        Total:                              2047 MB (7ffe0000)
    Largest Contiguous Free Blocks:
         1. [at 22cb0000]                   1239 MB (4d750000)
         2. [at 7da16000]                     28 MB ( 1cda000)
         3. [at 70856000]                     17 MB ( 112a000)
         4. [at 77281000]                     16 MB ( 107f000)
         5. [at 7f7f0000]                      6 MB (  68f000)
         6. [at 7ae71000]                      6 MB (  60f000)
         7. [at 7cd15000]                      5 MB (  5eb000)
         8. [at 7409e000]                      5 MB (  5d2000)
         9. [at 72b63000]                      5 MB (  53d000)
        10. [at 71ab3000]                      4 MB (  4fd000)
                                            ======= ==========
                                            1336 MB (53868000)
  
ans =
  
  1.2995e+009

可以看见虚拟内存只有2G,还有提升空间。考虑提升虚拟内存的方法。

2. 如何提升虚拟内存?系统虚拟内存的提升是否意味着matlab虚拟内存的提升?

方法一:利用win7本身设置。计算机右键→属性→高级系统设置→高级→设置→高级→更改→取消自动管理→自定义大小

方法二:用下面方法可使win7 32位OS下用于matlab的虚拟内存增加到3G。
设置: 开始---所有程序---附件,右击命令提示符,选择“以管理员身份运行”,
输入:bcdedit /set IncreaseUserVa 3072 回车,重启电脑。
取消: 开始---所有程序---附件,右击命令提示符,选择“以管理员身份运行”,
输入:bcdedit /deletevalue IncreaseUserVa 回车,重启电脑。

    Physical Memory (RAM):
        In Use:                             1488 MB (5d082000)
        Free:                               1582 MB (62e9c000)
        Total:                              3071 MB (bff1e000)
    Page File (Swap space):
        In Use:                             1652 MB (6742b000)
        Free:                               4488 MB (11885a000)
        Total:                              6140 MB (17fc85000)
    Virtual Memory (Address Space):
        In Use:                             1183 MB (49f0a000)
        Free:                               1888 MB (760d6000)
        Total:                              3071 MB (bffe0000)
    Largest Contiguous Free Blocks:
         1. [at 7fff0000]                   1022 MB (3fe8f000)
         2. [at 476d1000]                    604 MB (25c8f000)
         3. [at 6d366000]                     46 MB ( 2eba000)
         4. [at 70f53000]                     30 MB ( 1e0d000)
         5. [at 7dfd6000]                     23 MB ( 171a000)
         6. [at 45d90000]                     19 MB ( 1350000)
         7. [at 70226000]                     11 MB (  bfa000)
         8. [at 72de4000]                      8 MB (  8ec000)
         9. [at 23100000]                      8 MB (  800000)
        10. [at 7f7f0000]                      7 MB (  7f0000)
                                            ======= ==========
                                            1783 MB (6f725000)
  
ans =
  
  1.0722e+009

可以看到利用上述方法可以使得matlab虚拟内存增加,经过这番调整后,原仿真程序得以运行

原文地址:https://www.cnblogs.com/tony1224/p/2429437.html