2011-10-25 8 views
5

का उपयोग करते हुए दो ग्राफ को जोड़ते समय फ्लोट मेमोरी रिसाव हम फ्लोट के साथ दो ग्राफ प्रस्तुत कर रहे हैं, जो एक ही एक्स-अक्ष साझा करते हैं। हम उनके साथ साजिश:पैनिंग

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

हम यह सुनिश्चित करें कि पैनिंग और एक ग्राफ पर ज़ूम भी अन्य redraws और इसके विपरीत बनाने की जरूरत है। हम बंधन निम्नलिखित के साथ इस लक्ष्य को हासिल:

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

हम इन पिछले दो बयान नहीं जोड़ते हैं तो, कोई स्मृति रिसाव और ब्राउज़र (सभी ब्राउज़रों) है स्मृति चला जाता है जब भी यह redraws। लेकिन उपर्युक्त बाध्यकारी के साथ, ब्राउज़र कभी स्मृति को छोड़ देता है और यह सैकड़ों मेगाबाइट की ओर ढेर होता है।

इसके अलावा, हम माउस आंदोलनों के साथ व्यक्तिगत किंवदंतियों को भी अपडेट करते हैं।

हम स्मृति रिसाव के लिए दृष्टिकोण निम्नलिखित कोशिश की, लेकिन कोई भी काम:
1. plot1 और plot2 वैश्विक चर बनाने और स्पष्ट रूप से सामग्री
2. ग्राफ divs हटाया जा रहा है और इससे पहले कि
3. स्पष्ट रूप से unbinding घटनाओं पुनः बनाने को हटाने
4.

दो ग्राफ या डंपिंग मेमोरी को जोड़ने के लिए कोई अन्य दृष्टिकोण?

+1

क्या आप अपने पिछले प्रश्न http://stackoverflow.com/questions/7755822/flot-memory-leak को इसके बजाय किसी अन्य को बनाने में इंफोस जोड़ना जारी नहीं रख सकते? –

+0

कृपया, अगली बार, एक नया प्रश्न बनाने के बजाय [संपादित करें]। – Will

+2

कोड का थोड़ा और उपयोगी होगा। – Fiddles

उत्तर

0

समस्या फ़्लोट प्लगइन के साथ हो सकती है: jquery.flot.navigate.js।

मेरा सुझाव है कि आप ऊपर वर्णित फ्लोट प्लगइन के साथ JQuery से संस्करण-1.5 में अपग्रेड करें।

आप इस लिंक की यात्रा करना चाहते हो सकता है (देखें: अपने सही पक्ष की ओर चैंज):

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

0

मैं ने वही समस्या एक सिंहावलोकन भूखंड पर चयन को सिंक्रनाइज़ और पैनिंग/उसे ज़ूम हो सकता था मुख्य विचार; मेरा मुद्दा यह था कि एक साजिश के लिए इवेंट हैंडलर अन्य साजिश के लिए घटना को ट्रिगर कर रहा था और इसी घटना के निष्पादन को संभालने वाला पहला प्लॉट के लिए घटना को ट्रिगर कर रहा था, जिसके कारण मूल घटना हैंडलर निष्पादित हो गया ... एक अनंत पाश।

दूसरे शब्दों में, आप सुनिश्चित करें कि आपके मुद्दा नहीं है कि adjustGraph1Axes के निष्पादन जो अनजाने adjustGraph2Axes के निष्पादन का कारण बनता है ग्राफ 2 के लिए plotpan घटना है, जो ग्राफ 1 के लिए plotpan को गति प्रदान करने के लिए और adjustGraph1Axes का कारण बनता है ट्रिगर नहीं कर रहा है कर रहे हैं निष्पादित करें और इतने पर? समाधान के साथ मेरी पोस्ट यहां स्थित है: Flot event for range updates in response to panning/zooming

मैंने दो ईवेंट हैंडलर के बीच पिंग-पोंग मुद्दे को हल करने के लिए ध्वज का उपयोग किया और मेरा समाधान < http://jsfiddle.net/apandit/nu2rr58h/12/> पर है।

संबंधित मुद्दे