除了为他们的Eclipse插件(mathematica workbench,iirc)付钱,是否有其他方法可以描述mathkernel的内存使用情况(降至单个变量)?
现在,我完成了一个程序,该程序需要多个GB的ram,但是存储的唯一内容最多是〜50MB数据,但是mathkernel.exe倾向于保持〜1.5GB(基本上,与Windows一样多)给它)。除了保存我需要的数据并每次退出内核之外,还有什么更好的方法来解决此问题?
编辑:我刚刚了解了ByteCount函数(该函数在基本数据类型上显示了一些令人不安的结果,但那并不重要),但即使是我所有变量的总和也远不及Mathkernel占用的数量。是什么赋予了?
最佳答案
许多用户没有意识到的一件事是,无论是否将输出分配给变量,它都需要占用内存才能将所有输入和输出存储在 In
和 Out
符号中。 Out
也别名为%
,其中%
是前一个输出,%%
是倒数第二,等等。%123
等同于Out[123]
。
如果您不习惯使用%
,或者仅将其使用到较深的级别,请将 $HistoryLength
设置为0或一个小的正整数,以仅将最后几个(或不输出)保留在Out
中。
您可能还想看看函数 MaxMemoryUsed
和 MemoryInUse
。
当然,$HistoryLength
问题可能不是您的问题,但是您尚未分享实际评估。
如果您能够发布它,也许有人将能够阐明为什么它如此占用大量内存。
关于profiling - 在Mathematica中分析内存使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3418892/