0

私は次のスクリプトを持っています(私はraphaeljsも使用しています)、円を描き、1秒待って、もう一度円を描きます(コピーして貼り付けることができます-機能的で、raphaeljs.comからのraphaelのみを含める必要があります):

<div id="holder">

</div>  
<script src="raphael.js" type="text/javascript"></script>
<script>
    var paper = Raphael(10, 50, 320, 200);
    var rad = Math.PI / 180;
    var finAngle = 0;
    function sector(cx, cy, r, startAngle, endAngle, params) {
            var x1 = cx + r * Math.cos(-startAngle * rad),
            x2 = cx + r * Math.cos(-endAngle * rad),
            y1 = cy + r * Math.sin(-startAngle * rad),
            y2 = cy + r * Math.sin(-endAngle * rad);
        return ["M", cx, cy, "L", x1, y1, "A", r, r, 0, +(endAngle - startAngle > 180), 0, x2, y2];
    }

    var path = sector(100,100,50,0,180);
    var arc = paper.path(path);

    function draw()
    {
        path = sector(100,100,50,0,finAngle);
        arc.attr({"path": path});

        finAngle += 1;
        /*
        if (finAngle == 360)
            finAngle = 359;
        */
        if (finAngle > 360)
        {           
            clearInterval(interval);
            setTimeout("setNewInterval();", 1000);
            finAngle = 1;
        }

        return;
    }

    function setNewInterval()
    {
        interval = setInterval("draw();", 3);
    }
    var interval = setInterval("draw();", 3);

</script>

問題は、Firefoxでメモリリークが発生しているように見えることです(10分間実行すると、firfoxは700MBのRAMになります(クロムは25MBのままです))。Chromeには問題はありません。

私がそれをどのように修正するかについてのアイデアはありますか?

4

1 に答える 1

0

ある種の奇妙なGCヒューリスティックな問題のように見えます。https://bugzilla.mozilla.org/show_bug.cgi?id=761893を提出しました

それまでの間、あなたができる最善のことは、毎秒数十メガバイトの文字列を割り当てているものを見つけて、それを行わないことです...

于 2012-06-06T03:08:38.080 に答える