profiling - 在Mathematica中分析内存使用情况

标签 profiling memory-management wolfram-mathematica

除了为他们的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/

相关文章:

objective-c - Objective-C : What does allocation 'count' mean (using instruments)

geometry - 在 Mathematica 中将点从 4d 空间投影到 3d 空间

wolfram-mathematica - 原子晶格的邻域计算

profiling - Linux 内核中 Perf 事件子系统的性能开销

c++ - VS2005 Debug模式和 Release模式之间的巨大性能影响

ios - 最佳 IOS 内存管理 @ 返回分配对象的函数调用

c - 为什么我们在实现对齐 malloc 时使用位运算符 & 和 ~ 而不是数学运算符 %?

wolfram-mathematica - 在不显式迭代的情况下找到满足某些条件的最大矩形 block

haskell - hGetBuf、hPutBuf等为什么要分配内存?

Python配置文件模块: <string>:1(?)