簡體   English   中英

Angularjs如何使用ngView處理內存管理?

[英]How does Angularjs handle Memory Management with ngView?

當您使用ngView時,說100個不同的視圖,每個視圖具有不同的范圍。 Angular會自動處理破壞舊模板/范圍還是留在內存中? 我很好奇,如果Angular在我開始編寫自定義代碼以減少內存負載之前自己處理這個問題。 到目前為止,我所看到的每個新視圖都會疊加在內存中。

這是一個AngularJS特定問題。 我知道垃圾收集在javascript中是如何工作的。

引入范圍背后的設計決策之一是簡化內存管理。 通過將模型的空間划分為子部分(范圍),我們可以刪除模型中不需要的部分(范圍),並在需要時添加新部分。 所以,是的,范圍是整個記憶管理難題的重要組成部分。

當涉及到關於ng-view特定問題時,該指令將僅保留當前活動視圖的范圍 ng-view是范圍創建(和范圍銷毀!)指令之一。 當導航到新視圖時,它將自動創建新范圍,並將自動銷毀與舊視圖關聯的范圍。 這可以在AngularJS 源代碼中輕松驗證。

唯一需要考慮的內存消耗部分是通過網絡獲取的模板。 路由中引用的所有模板都緩存在$templateCache 如果您確定它可以解決應用中特定的性能瓶頸問題,則可以謹慎地使用模板。 我們只需要意識到它是內存消耗的交易時間(網絡時間)。

簡而言之:無需為ng-view推出自己的范圍管理 - 如果您發現任何范圍保留,則應將其報告為錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM