2017-08-15 55 views
0

有沒有使用垃圾收集的程序設計語言,但是也允許手動內存管理?例如,提供析構函數。編程語言甚至有可能同時進行垃圾收集和手動內存管理?一種帶垃圾收集和手動內存管理的編程語言

相關SO這裏的問題,但沒有答案: Interpreted languages with manual memory management?

感謝

+1

是的。 C和C++。 [勃姆-GC(http://www.hboehm.info/gc/)。 –

+0

謝謝艾略特。使用'GC_MALLOC()'創建的對象可以使用'delete'銷燬嗎? – mils

+0

Ada ............. – user3344003

回答

1

這是絕對有可能的,但它需要的語言支持對象的分配(假設它是一個面向對象的語言,這肯定讓生活更容易)來自兩個(或更多)內存區域。

一個支持這個平臺的例子是Java的實時規範(RTSJ)。由於實時操作很容易受到非確定性GC的干擾,因此RTSJ會在應用程序代碼可以使用的標準Java堆之外添加內存​​區域。 RTSJ使用內存區域的概念,其中有三個:HeapMemory,ScopedMemory和ImmortalMemory。 ScopedMemory允許特定線程使用內存區域。當線程終止時,內存區域被自動釋放。這依賴於開發人員注意不要在線程之外共享對該區域的引用。 ImmortalMemory是永遠不會被垃圾回收的內存區域。一旦在這個區域分配了對象,就不可能回收空間(沒有free()調用)。

我不同意C和C++是符合您描述的語言的評論。既不在託管環境中運行,也不具有任何形式的併發GC。