为什么Matlab的`rand(1,1e9)`使64位Windows 7无响应?

时间:2016-01-05 23:28:50

标签: matlab

当我开始一个新的Matlab会话时,rand(1,1e9);命令导致我的64位Windows 7无响应。这意味着每隔几分钟一次,它可能会响应鼠标点击或几分钟后的某些事情,但除此之外,我甚至无法在应用程序之间切换,无法调用任务管理器,以及任务管理器是否正在运行在rand(1,1e9);命令之前,甚至无法在“进程”选项卡上滚动到Matlab。我没有收到内存不足的消息。单击Matlab的“X”图标以关闭应用程序不会执行任何操作。 Ctrl-C不执行任何操作,也不会与Shift,Ctrl和Alt的任何1,2和3键组合一致。

知道rand(1,1e8);(减少10倍的双打)不会导致这些问题并且(相对)完全没有时间完成,可能会提供信息。

memory命令的内存信息是:

>> memory
Maximum possible array:     12782 MB (1.340e+10 bytes) *
Memory available for all arrays:     12782 MB (1.340e+10 bytes) *
Memory used by MATLAB:       674 MB (7.068e+08 bytes)
Physical Memory (RAM):      8070 MB (8.462e+09 bytes)

*  Limited by System Memory (physical + swap file) available.

在我可以杀死Matlab的少数情况下,操作系统仍然没有如上所述的响应,即使任务管理器显示内存使用量从7.9GB变为接近零。

Matlab的rand(1,1e9);如何导致这种持续的操作系统无响应?假设问题与内存有关,那么当这些限制被提升时,我如何确保Matlab与OS完美匹配(和/或反之亦然)?

请注意,这不是关于如何避免碰到内存限制的问题,因为我知道我可以围绕它们进行编码。它是关于如何在限制被提升时避免失去控制,以便我可以决定是否要中断或终止操作和/或应用程序。例如,Matlab's Memory Allocation page显示1e9双精度需要8e9字节,因此与其他内存要求一起,我可能会遇到上面显示的实际和交换内存。无论我是否收到错误,或者命令只需要更长时间,我仍然希望Matlab能够响应键盘请求来解决问题。我还希望操作系统的其余部分能够响应,包括使用任务管理器在没有响应中断请求的情况下杀死Matlab。

0 个答案:

没有答案