您好!
請問:北太天元軟件是如何管理內存的?
我先談一下MatLab、Python軟件的內存管理機制。
MatLab有一個致命缺陷,就是它沒有一套合理的內存管理機制,導致它沒有在計算機專業(yè)鄰域使用開來.
MatLab給一個數(shù)組賦值時,會在內存申請一個連續(xù)的存儲空間.
當正在運行的數(shù)組需要增加新元素時,如果原來的內存區(qū)域可以容納新增加的數(shù)據(jù),則可以直接追加元素;如果連續(xù)塊不夠大,需要先重新分配足夠大的連續(xù)內存塊,則將原有數(shù)據(jù)拷貝到新分配的內存中,在此期間,內存中會有原來數(shù)據(jù)的兩份拷貝,增加了Out of Memory(內存溢出)的風險,并添加新的元素到新的塊中,然后釋放原來的內存.
當程序在循環(huán)過程中產生了大的瞬時變量時,MatLab沒有提供瞬時變量的內存收回機制,如果出現(xiàn)內存溢出,需要程序員使用clear命令,清除內存中無用的變量.但這種清除會導致內存區(qū)域的不連續(xù).
因此,當內存區(qū)域出現(xiàn)很多碎片后,即使有很多剩余空間,但沒有連續(xù)的空間分配給大的變量Block使用時,還是會出現(xiàn)Out of Memory問題,此時只好使用MatLab提供的pack命令進行解決.
這樣的內存管理機制是無法進入計算機專業(yè)領域的臺面的.
一種編程語言如果不能獲得計算機界認可,最多只能在專業(yè)學術界鄰域內使用.而一個非計算機專業(yè)的理工科生在校期間如果學習了這種語言,除非他今后從事教育、科研領域,否則該語言是沒有使用機會的,這就相當尷尬,因為非計算機專業(yè)的理工科生畢業(yè)后進入企業(yè)界的占大部分.
Python的內存管理做得比較到位.Python的變量在內存中是使用完后,立即自動釋放,其數(shù)組地址是按Hash算法隨機生成的,通過鏈式隊列管理,不需要連續(xù),它還提供了一種迭代生成器機制,即:變量的內容在內存中,邊訪問、邊生成、邊釋放,基本上不會出現(xiàn)Out of Memory問題.
所以,Python軟件打通了三界(計算機界、企業(yè)界、學術界).
不一定對,敬請賜教!
南昌航空大學 艾小偉,QQ:627869587