2011-10-25 26 views
5

kullanarak iki grafiği ilişkilendirirken bellek sızıntısı oluşturuyoruz, aynı x eksenini paylaşan iki grafiğe sahip grafikler oluşturuyoruz. biz bunları çizmek: Biz kaydırma ve bir grafik üzerinde yakınlaştırma, diğer yeniden çizer ve tersi olduğundan emin olmak için ihtiyaçKaydırma

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

. Biz bu son iki ifadeleri eklemezseniz

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

, hiçbir bellek sızıntısı ve tarayıcı (tüm tarayıcılar) vardır o yeniden çizer zaman hafızayı düşer: Biz şu bağlama ile bunu başarmak. Ancak yukarıdaki bağlama ile tarayıcı asla belleği düşürmez ve yüzlerce megabayta doğru yığılır. Ayrıca, bireysel efsaneleri fare hareketleriyle de güncelleriz.

biz bellek sızıntısı yaklaşımlar yapmak istedim, ama hiçbiri çalıştı:
1. plot1 ve plot2 küresel değişkenleri yapma ve açıkça içeriğini
2. grafiği div'leri silme ve önce
3. Açıkça unbinding olayları yeniden silme rebered
4. Yeniden çizilmeden önce boş bir grafiği çizme

İki grafiği birleştirmek veya bellek dökümünde başka herhangi bir yaklaşım var mı?

+1

sen http://stackoverflow.com/questions/7755822/flot-memory-leak başka bir tane oluşturmak yerine önceki soru üzerine infos ekleyerek devam edemez? –

+0

Lütfen, bir dahaki sefere, yeni bir soru oluşturmaktan ziyade [değiştir]. – Will

+2

Biraz daha fazla kod yararlı olacaktır. – Fiddles

cevap

0

Ben bir bakış arsa üzerinde seçimini senkronize ve yakınlaştırma/kaydırma benzer bir sorun yaşamış olabileceğiniz ana arsa; Benim sorunum bir olay için olay işleyici diğer olay için olay tetikleyici oldu ve ilgili olay işleyicisinin yürütmesi, ilk olay için olay başlatılırken, orijinal olay işleyicisinin yürütmesine neden oldu ... bir sonsuza götüren döngü. Başka bir deyişle

, emin sorununuzun adjustGraph1Axes yürütülmesi grafiğinde 1 için plotpan tetiklemek ve adjustGraph1Axes neden istemeden adjustGraph2Axes yürütülmesini neden grafiğinde 2 için plotpan olayı, tetiklemiyordur değil ki yürütmek ve benzeri? Benim çözüm ile birlikte çözüm burada bulunur: Flot event for range updates in response to panning/zooming.

İki olay işleyicisi arasındaki ping-pong sorununu çözmek için bir bayrak kullandım ve çözümüm < http://jsfiddle.net/apandit/nu2rr58h/12/> adresinde.

İlgili konular