自動內存管理的思想得到了新的編程語言的大力支持。如果存在自動管理其他資源(如文件,網絡套接字等)的概念,我很感興趣。有沒有編程語言的例子支持除內存之外的資源自動管理?
回答
對於單線程應用程序,在一段代碼範圍內可用的資源模式(最後清理)以多種語言存在。例子是在C++中使用RAII,或者在Common Lisp中使用with-open-file(在新的受Lisp影響的語言中相當於Dylan中的C#,Python,在Ruby中您可以將塊傳遞給文件對象)。
我還沒有意識到任何更適合於多線程環境的地方,在那裏現代的垃圾收集器發光,缺乏在C++中結合RAII和引用計數或auto_ptr,這並不總是一個微不足道的組合。
資源自動管理和自動內存管理之間的一個重要區別是內存管理通常可以承擔非確定性,並且只有在進程需要時纔會回收,而通常資源在操作系統級別是有限的,所以應該一旦不再使用,應立即回收。因此,選擇智能指針而不是垃圾收集作爲管理實現。有一箇中間級別的資源 - GDI對象,臨時文件句柄,線程 - 應用程序想要限制其使用的總量,但不關心將它們釋放到其他進程 - 這些通常會彙集在一起,從而使您獲得一些自動管理的方式。
我們現在可以自動管理內存分配的原因之一是我們有這麼多。
早在記憶緊張的日子裏,你不得不從系統所有咬合物中擠出最多的東西。
其他資源如文件句柄和套接字少得多,仍然需要手工處理(雙關語意)。
還可以考慮一下.net緊湊型框架,windows mobile設備有32mb或64mb的易失性內存可以播放 - 當你想到它時 - 仍然是「很多」的情況並不少見。
我想知道.net壓縮框架的佔地面積是多少,以及它如何在具有4mb易失性存儲器的諾基亞手機上執行。
任何任何想法? (這是一個維基答案,隨時糾正或添加更多細節)
因此,IMHIO我們可以承受緩慢的回收記憶,因爲我們不會匆匆跑掉它,這是與其他資源的情況。
對象持久性和緩存子系統可以被認爲是文件和資源的自動分配。如果將緩存子系統應用於網絡連接,則不必關心文件打開,文件刪除等。
一種自動管理網絡連接的方法可以在並行計算環境(即MPI)中完成,您可以通過編程方式設置處理器互連的形狀。比你只是從一個進程發送消息到另一個進程,幾乎忽略了它的實現方式。有時這些消息在套接字中被翻譯。
如果你有一個函數讓你從它的Url獲得一個頁面,你會認爲它是一種自動套接字管理嗎?
- 1. 資源管理器沒有啓動
- 2. 有沒有必要支持開發新的編程語言的32位平臺?
- 3. 除C++外,哪些編程語言支持運算符重載?
- 4. 有沒有辦法編譯gcc來支持單一語言?
- 5. 有沒有用「真實」語言抽取引理的例子?
- 6. 編程語言設計的好資源?
- 7. 編程語言的音頻支持
- 8. meego支持的編程語言
- 9. 支持XML文字的編程語言
- 10. 有沒有非單例模塊的編程語言?
- 11. Java 7自動資源管理JDBC(試用資源語句)
- 12. 資源管理器的內存消耗
- 13. 保存子資源有角的$資源
- 14. 是否有任何現代編譯語言與手動內存管理?
- 15. Html渲染器資源有限(良好的內存管理)
- 16. Photoshop - 有沒有一種編程語言?
- 17. 具有自動完成支持的iSeries的查詢管理器
- 18. 沒有OOP語言的Windows編程
- 19. 一種帶垃圾收集和手動內存管理的編程語言
- 20. 如何編寫支持靜態和動態內存管理的Fortran程序?
- 21. 僅支持有限數量的語言
- 22. Stata編程語言沒有語法?
- 23. 彙編語言支持ASP.net
- 24. 資源用於編程,支持插件
- 25. IMAP支持Vala編程語言
- 26. Eclipse不支持哪些編程語言?
- 27. AWS dynamodb支持「R」編程語言
- 28. TestComplete支持哪些編程語言?
- 29. 嘗試使用此語言級別不支持的資源
- 30. 所有動態語言都支持鴨子打字嗎?