我如何最大化最大可用内存和连续的内存块?

7视图(30天)
内存分配错误发生在MATLAB请求一块内存大于最大可用内存块。可以发生的任何时间,但最可能在分配一个大矩阵在MATLAB中,更新模型框图,或与车间实时生成代码。万博1manbetx

接受的答案

MathWorks支万博1manbetx持团队”class=
编辑:MathWorks支万博1manbetx持团队 2021年2月17日
这里有一些资源来试着如果你看到内存分配错误,或者你怀疑背后是内存分配问题。这些资源大部分是针对32位Windows。
1。请查阅产品文档了解内存分配。
2。咨询技术指出“1806 -仿真软件性能和内存管理指南》万博1manbetx:
3所示。使用Windows任务管理器或Process Explorer MATLAB使用多少内存。
4所示。使用MATLAB命令,看看在MATLAB的记忆。
”。运行”功能memstats内存使用情况的总结。
b。运行”功能dumpmem”一长串的所有分配的内存块。MATLAB。exe、dll和墨西哥人文件出现的名字。匿名一切看上去是这样的:“< >”,包括存储MATLAB变量,MATLAB代码,模型块,和JAVA类。万博1manbetx有关的更多信息,请参阅下面的解释dumpmem输出。
运行c。“谁”看到MATLAB变量和他们需要多少字节。
d。运行“inmem”看看MATLAB函数,墨西哥人文件和JAVA类加载。
e。“find_system运行(“类型”,“block_diagram”)什么仿真软件模型和库加载。万博1manbetx
5。使用“清晰”来删除变量、函数和类定义从内存。使用“close_system”来删除模型方框图。万博1manbetx
6。节省你的工作和重新启动MATLAB是最有效的方法从内存。只是* *的方式整理MATLAB工作区在32位Windows系统。如果一个操作有时耗尽内存,立即被重启MATLAB试一试。
运行“matlab - h”简短的文档matlab命令行开关。
7所示。“-nojvm”命令行开关禁用许多功能,但是可以节省大量内存。这里有一些结果。内存使用kb。
R2007b:
物理内存:与jvm(155436 - 53296没有jvm) = 102140的差别。
虚拟内存:与jvm(524040 - 172824没有jvm) = 351216的差别。
R2008a:
物理内存:与jvm(142464 - 57576没有jvm) = 84886的差别。
虚拟内存:与jvm(468052 - 142464没有jvm) = 325588的差别。
8。“盾<水平>“命令行开关控制积极MATLAB试图最大化大块的空闲内存,迫使dll加载。有四个级别:
“盾”disbles屏蔽。MATLAB无助于保护自由的内存块。
“盾最低”保护0 x5000000-0x7000000直到matlabrc之前地址范围。m是处理。
“盾介质”保护直到* * matlabrc后0 x5000000-0x7000000地址范围。m是处理。
“盾最大”保护计算最大地址范围到matlabrc之后。m是处理。
媒介和最大水平实验。
9。“-shieldload & lt;在列表“命令行开关加载dll & lt;在列表同时保护内存地址空间的一部分由“盾牌”开关控制。这样迫使这些dll搬到内存地址,不失大自由。
为shieldload找到有用的参数,开始MATLAB和使用特性dumpmem的MATLAB命令行获取所有加载dll的名称和地址,如以下示例所示。输出特性dumpmem”包括以下:
模块基地在使用免费的
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
<匿名> 06 f70000 00800000 * 00800000 * *
C:\Program Files\Lenovo\HOTKEY\hkvolkey.dll 10000000 00011000 0 ffef000 * *
C: \ WINNT \ system32系统\ xpsp2res。dll 20000000 002 c5000 cb000 * * * * 256
C: \ WINNT \ System32系统\线轴\司机\ W32X86 \ 3 \ PS5UI。DLL 45990000 000 b5000 1 ab8b000 * * *
C: \ WINNT \ system32系统\ mslbui。dll 605 d0000 00009000 114 c7000 * * *
C: \ WINNT \ system32系统\ WS2HELP。dll 71 aa0000 00008000 00008000
最大可用内存块627879936字节(598.79 MB)位于202 c5000地址
列基地,使用,和免费的十六进制数字。最后三位数字是000,因为内存分配页0使用户(或4096)字节。指定或匿名”模块“占据”用“字节,从解决“基地”。有“免费”未使用的字节之间的模块和下一个的开始。基地+使用+免费=下一个(基础)
后一个“+”模块名称是指模块的地址搬迁,因为它负载通常是在使用中。
星号在使用后或免费国旗至少1块,16或256字节。
模块hkvolkey。dll, xpsp2res。dll, PS5UI。DLL, mslbui。dll占用3.6 MB,但他们被放置的方式减少最大的自由块内存从大约1600 MB到599 MB。
可以-shieldload迫使这些模块加载内存中的其他地方吗?后开始MATLAB命令行:
matlab-nojvm -shieldload“C: \ Program Files \ \热键\ hkvolkey.dll联想C: \ WINNT \ system32系统\ xpsp2res.dll C: \ WINNT \ system32系统\线轴\司机\ W32X86 \ 3 \ PS5UI.DLL, C: \ WINNT \ system32系统\ mslbui.dll
的相关部分的功能dumpmem输出是:
模块基地在使用免费的
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
<匿名> 07140000 00080000 08 e40000 * *
C:\Program Files\Lenovo\HOTKEY\hkvolkey.dll 10000000 00011000 0 ffef000 * *
C: \ WINNT \ system32系统\ xpsp2res。dll 20000000 002 c5000 cb000 * * * * 256
C: \ WINNT \ System32系统\线轴\司机\ W32X86 \ 3 \ PS5UI。DLL 45990000 000 b5000 2 c05b000 * * *
C: \ WINNT \ system32系统\ WS2HELP。dll 71 aa0000 00008000 00008000
最大可用内存块738570240字节(704.36 MB) 45 a45000位于地址
显然hkvolkey。dll, xpsp2res。dll, PS5UI。DLL是锁定的。
“盾最大”工作情况如何?后开始MATLAB命令行:
matlab -nojvm盾最大
的相关部分的功能dumpmem输出是:
模块基地在使用免费的
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
<匿名> 07 a10000 00080000 08570000 * *
C:\Program Files\Lenovo\HOTKEY\hkvolkey.dll 10000000 00011000 0 ffef000 * *
C: \ WINNT \ system32系统\ xpsp2res。dll 20000000 002 c5000 b000 * * * * 4030
C: \ WINNT \ system32系统\ mslbui。dll 605 d0000 00009000 17 b57000 * * *
最大可用内存块1076932608字节(1027.04 MB)位于202 c5000地址
这是更好的。
最后,一起做盾牌和-shieldload比单独工作吗?后开始MATLAB命令行:
matlab-nojvm盾最大-shieldload C: \ WINNT \ system32系统\ mslbui.dll
的相关部分的功能dumpmem输出是:
模块基地在使用免费的
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
<匿名> 085 00080000 07990000 f0000 * *
C:\Program Files\Lenovo\HOTKEY\hkvolkey.dll 10000000 00011000 0 ffef000 * *
C: \ WINNT \ system32系统\ xpsp2res。dll 20000000 002 c5000 * 57 e6b000 * * *
C: \ WINNT \ WinSxS \ x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_6b128700 \ MSVCR80。dll78130000 0009 b000 00005000
最大可用内存块1474736128字节(1406.42 MB)位于202 c5000地址
仍然没有运气hkvolkey移动。dll, xpsp2res。dll,但我们最大的块从599 MB增加到1406 MB。

更多的答案(0)

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!