2012-02-22 30 views
0

jQueryが選択可能でメモリリークが発生しています。どうすればこれを防ぐことができますか?私が紛失しているものはありますか?jqueryUIがメモリリークの原因となる選択可能

私は、jqueryの複数のインスタンスを使用する複雑なWebアプリケーションをUI選択可能です。私はメモリリークを追跡するためにsIEveを使用していましたが、リークの数がuiで選択可能なインスタンスの数に等しいことに気付きました。

私は考えることができる最小限の選択可能なものを使用する簡単なテストページを書きました。 sIEveでは、1つのメモリリークが発生しました(div#b)。ここで

はHTMLです:

<!DOCTYPE html> 
<html> 
<head><title>test leaks with selectable</title> 

<script type="text/javascript" src="jquery.js"></script> 
<script type="text/javascript" src="jquery-ui.js"></script> 
<script type="text/javascript" src="testLeaks.js"></script> 
</head> 

<body> 

<div id="b"></div> 

</body> 
</html> 

そして、ここではtestleaks.jsです:

function begin() { 
    $('#b').selectable(); 
} 

function unloadCleanup() { 
    $('#b').selectable('destroy'); 
    $('#b').remove(); 
} 

$(window).unload(unloadCleanup); 
$(document).ready(begin); 

私はすでにリークを見た後、私は唯一のunloadCleanup.unloadハンドラが含まれています。それがあってもなくても違いはありません。

これは単にjquery-selectableをアクティブにするとメモリリークが発生するという証拠です。

次にIサブdivを含むようにtestleaks.htmlを変更:ふるいで

<div id="b"> 
    <div></div> 
    <div></div> 
    <div></div> 
    <div></div> 
    <div></div> 
    <div></div> 
    <div></div> 
    <div></div> 
    <div></div> 
    <div></div> 
</div> 

を、Iは、ページをロードし、サブdiv要素のいずれかを選択しました。結果として生じるリークの数は、選択可能なdiv自体に対して1つ、選択されたdivごとに1つ、それぞれ11でした。

複数のsub-divを選択しても、リークの数は増えませんでした。サブディビジョンが選択された場合はリークの回数は11回、サブディビジョンが選択されていない場合は1回でした。 選択ダイアログ、および日付ピッカー、および明るさをテーマにしたのjQuery 1.6.4、およびjQueryのUI-1.8.16を使用して

私が間違っていることはありますか?

答えて

0

原因はではなく、selectableでした。それは明らかにdatepickerでした。

私はjQuery 1.7.1とjQuery UI 1.8.18を同じコンポーネント(selectable、dialog、datepicker)で更新しました。それでもメモリリークには同じ問題がありました。

datepickerなしで、選択とダイアログのみを使用してみましたが、メモリリークが消えました。

関連する問題