您好!
请问:北太天元软件是如何管理内存的?
我先谈一下MatLab、Python软件的内存管理机制。
MatLab有一个致命缺陷,就是它没有一套合理的内存管理机制,导致它没有在计算机专业邻域使用开来.
MatLab给一个数组赋值时,会在内存申请一个连续的存储空间.
当正在运行的数组需要增加新元素时,如果原来的内存区域可以容纳新增加的数据,则可以直接追加元素;如果连续块不够大,需要先重新分配足够大的连续内存块,则将原有数据拷贝到新分配的内存中,在此期间,内存中会有原来数据的两份拷贝,增加了Out of Memory(内存溢出)的风险,并添加新的元素到新的块中,然后释放原来的内存.
当程序在循环过程中产生了大的瞬时变量时,MatLab没有提供瞬时变量的内存收回机制,如果出现内存溢出,需要程序员使用clear命令,清除内存中无用的变量.但这种清除会导致内存区域的不连续.
因此,当内存区域出现很多碎片后,即使有很多剩余空间,但没有连续的空间分配给大的变量Block使用时,还是会出现Out of Memory问题,此时只好使用MatLab提供的pack命令进行解决.
这样的内存管理机制是无法进入计算机专业领域的台面的.
一种编程语言如果不能获得计算机界认可,最多只能在专业学术界邻域内使用.而一个非计算机专业的理工科生在校期间如果学习了这种语言,除非他今后从事教育、科研领域,否则该语言是没有使用机会的,这就相当尴尬,因为非计算机专业的理工科生毕业后进入企业界的占大部分.
Python的内存管理做得比较到位.Python的变量在内存中是使用完后,立即自动释放,其数组地址是按Hash算法随机生成的,通过链式队列管理,不需要连续,它还提供了一种迭代生成器机制,即:变量的内容在内存中,边访问、边生成、边释放,基本上不会出现Out of Memory问题.
所以,Python软件打通了三界(计算机界、企业界、学术界).
不一定对,敬请赐教!
南昌航空大学 艾小伟,QQ:627869587