有沒有使用垃圾收集的程序設計語言,但是也允許手動內存管理?例如,提供析構函數。編程語言甚至有可能同時進行垃圾收集和手動內存管理?一種帶垃圾收集和手動內存管理的編程語言
相關SO這裏的問題,但沒有答案: Interpreted languages with manual memory management?
感謝
有沒有使用垃圾收集的程序設計語言,但是也允許手動內存管理?例如,提供析構函數。編程語言甚至有可能同時進行垃圾收集和手動內存管理?一種帶垃圾收集和手動內存管理的編程語言
相關SO這裏的問題,但沒有答案: Interpreted languages with manual memory management?
感謝
這是絕對有可能的,但它需要的語言支持對象的分配(假設它是一個面向對象的語言,這肯定讓生活更容易)來自兩個(或更多)內存區域。
一個支持這個平臺的例子是Java的實時規範(RTSJ)。由於實時操作很容易受到非確定性GC的干擾,因此RTSJ會在應用程序代碼可以使用的標準Java堆之外添加內存區域。 RTSJ使用內存區域的概念,其中有三個:HeapMemory,ScopedMemory和ImmortalMemory。 ScopedMemory允許特定線程使用內存區域。當線程終止時,內存區域被自動釋放。這依賴於開發人員注意不要在線程之外共享對該區域的引用。 ImmortalMemory是永遠不會被垃圾回收的內存區域。一旦在這個區域分配了對象,就不可能回收空間(沒有free()調用)。
我不同意C和C++是符合您描述的語言的評論。既不在託管環境中運行,也不具有任何形式的併發GC。
是的。 C和C++。 [勃姆-GC(http://www.hboehm.info/gc/)。 –
謝謝艾略特。使用'GC_MALLOC()'創建的對象可以使用'delete'銷燬嗎? – mils
Ada ............. – user3344003