2016-04-13 12 views
3

私は自分のホームネットワーク用の小さなウェブアプリケーション(天気データ、電力消費など)をHighchartsで構築している間に大きな問題を抱えています。Highchartsのメモリリークが大きい - 作成と破棄にメモリが不足していますか?

私は24時間365日ウェブアプリケーションを実行しているので、いくつかの重要なデータを簡単な表示で表示します;-) この番号/タイルの1つをクリックすると、詳細ページグラフが表示されます。私は、X秒ごとに詳細ページをスクロールする自動詳細機構を実装しました。

私の問題は、タイルを隠すときにチャートが '.highcharts()。destroy();'で破棄された後、ダイアログボックスが破棄されるということです。


約4-5時間後、ブラウザがクラッシュします( 'あスナップ...')。 私は、ウェブサイトのメモリ使用量をプロファイリングし、それがそのようになっています

enter image description here

私はそのように見てはいけないという、かなり確信して!ご覧のように、下の「c」は成長しています!

だからここにチャートの私の創造:

if(typeof $(bindTo).highcharts() !== 'undefined'){ 
 
     $(bindTo).highcharts().destroy(); 
 
} 
 

 
// get here data with jquery from backend [jquery caching disabled] 
 

 
var chart = $(bindTo).highcharts({ 
 
...... 
 
});

だからここにクロームプロファイラからちょうど別の詳細:

enter image description here

私はただの一つを選びましたこれらの青い棒(つまり、ここで作成されたこのオブジェクトは、Profの最後にまだ生きていますiling処理[?!])。この青い棒がこの「c」オブジェクトで構成されているように見えますが、これはHighchartsに属しています。

私は間違っていますか?これは既知の動作ですか?これをどうすれば解決できますか? (うん、多分私はデータを更新一度だけ、ちょうどすべてのチャートを作成することもできますが、それは私の最後のdecission ;-)だろう)

おかげ

答えて

2

さて、

私は自分自身で問題を解決しました。

長い時間のデバッグの後、私は、Highchartsの破壊メソッドが使用される前に、私のモーダルダイアログがDOMから切り離されていることを知りました。 したがって、モーダルダイアログの隠れたリスナーの中にdestroy-methodを配置すると、それが実行されました。

関連する問題