2006年12月13日

Stack Allocation

之前曾經聽聞Java SE 6會支援stack allocation。但根據剛剛google的結果,似乎要到下一版(7)才會支援囉。

此最佳化簡單來說,就是透過分析(escape analysis),將建立於某函式中的所有物件,挑出那些當離開此函式後便不會被使用的,將之存放於stack上。當函式結束執行時,便可隨著stack一起被釋放。

相對於傳統的方式,所有的物件皆存放於heap,stack上只存放指到heap上物件的reference。物件的釋放統一由GC來管理。

stack allocation好處很多:減少GC時間、減少GC次數等。一些講求即時性的嵌入式Java環境,通常會大量(甚至只准)使用stack來存放物件,原因無他,GC通常是極難為預測的,不論是發生的時間點或延遲時間。

沒有留言:

張貼留言