簡體   English   中英

使用平移關聯兩個圖形時繪制內存泄漏

[英]Flot memory leak while associating two graphs using panning

我們用flot渲染兩個圖,它們共享相同的x軸。 我們繪制它們:

plot1 = $.plot($("#placeholderGraph1"), p1_data, d1_options);
plot2 = $.plot($("#placeholderGraph2"), p2_data, d2_options);

我們需要確保在一個圖形上平移和縮放也會重繪另一個圖形,反之亦然。 我們通過以下綁定實現此目的:

$("#placeholderGraph1").bind("plotpan", adjustGraph1Axes);
$("#placeholderGraph2").bind("plotpan", adjustGraph2Axes);

如果我們不添加最后兩個語句,則沒有內存泄漏,瀏覽器(所有瀏覽器)在重繪時會丟失內存。 但是通過上面的綁定,瀏覽器永遠不會丟失內存,它會累積到數百兆字節。

除此之外,我們還通過鼠標移動更新單個圖例。

我們嘗試了以下內存泄漏的方法,但沒有一個工作:
1.制作plot1和plot2全局變量並明確刪除內容
2.刪除圖形div並重新創建
3.重新綁定之前顯式解除綁定事件
4.在重繪之前繪制空圖

關聯兩個圖表或轉儲內存的任何其他方法?

問題可能在於Flot插件:jquery.flot.navigate.js。

我建議你升級到JQuery到版本1.5以及上面提到的flot插件。

您可以訪問此鏈接(請參閱:右側的ChangeLog):

https://code.google.com/p/flot/source/browse/trunk/jquery.flot.navigate.js?r=317

我可能有一個類似的問題同步概覽圖上的選擇和主圖中的平移/縮放; 我的問題是,一個繪圖的事件處理程序觸發了另一個繪圖的事件,並且相應的事件處理程序的執行觸發了第一個繪圖的事件,這導致原始事件處理程序執行...導致無限環。

換句話說,你確定你的問題不是adjustGraph1Axes的執行沒有觸發圖2的plotpan事件,這會導致無意中執行adjustGraph2Axes ,這會觸發圖1的plotpan並導致adjustGraph1Axes執行等等? 我的帖子和解決方案位於此處: Flot事件用於范圍更新以響應平移/縮放

我用一個標志來解決兩個事件處理程序之間的乒乓問題,我的解決方案是在< http://jsfiddle.net/apandit/nu2rr58h/12/ >。

暫無
暫無

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

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