我們開發了一個使用Dojo開發的豐富的Web應用程序(使用許多不同的視圖,大量的按鈕,視圖之間的事件等)。任何數據都通過Rest接口異步加載。IE8中由Dojo 1.7.2引起的內存泄漏
現在我們意識到,在Internet Explorer 8中,如果應用程序的URL在相同的選項卡/瀏覽器窗口中打開了兩次或更多次腳本,並且很快會導致內存不足。
似乎Dojo不斷開任何事件處理程序/ DOM節點。
我跟蹤到一個簡單的html頁面,只有一個單獨的Dojo按鈕小部件,並用sIEve(IE8的內存泄漏分析器)分析了html頁面。如果再次調用html頁面,則某些DOM節點不會被釋放(成爲孤兒)。
是否有任何設置/技巧/模式來防止孤兒?
我認爲這種行爲會導致我們的Dojo應用程序的巨大佔用空間,而離開應用程序URL時並不會釋放它。
這是樣本HTML頁面:
<html>
<head>
<title>MemLeak Test</title>
<style>
@import "../themes/claro/claro.css";
</style>
<script
type="text/javascript"
data-dojo-config="'parseOnLoad':true"
src="../js/dojo-release/dojo/dojo.js"></script>
<script type="text/javascript">
require([ "dojo/parser" ]);
require([ "dijit/form/Button" ]);
</script>
</head>
<body class="claro">
<h1>Memory Leak?</h1>
<input
type="button"
dojoType="dijit.form.Button"
label="Button"></input>
</body>
在篩孔樣本HTML文件兩次後,它會報告已經18個孤立的項目: HEAD,SCRIPT,DIV,SPAN(重複不同的命令);全部只有1個Ref並標記爲泄漏! (對不起,我不能發佈任何截圖)
Thx對於該主題的任何幫助。