Google Maps APIのメモリーリーク問題
以下のコードを実行し続けると、少しずつですがメモリーが食いつぶされていきます。なかなかうまい解決方法が見つからなくて困っています。Google Maps APIを利用している、はてなマップでも同様の問題を確認しています。特に、私の実験によると、Internet Explorer 6.0はFirefoxよりもメモリーリークの度合いが大きいようです。
ここで実際に実験ができるようにしてみました。Windowsタスクマネージャでメモリー使用量を監視しながら試してみて下さい。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Memory leak test</title> <script src="http://maps.google.com/maps?file=api&v=1&key=****" type="text/javascript"></script> </head> <body> <div id="msg"></div> <div id="map" style="width: 800px; height: 600px"></div> <script type="text/javascript"> //<![CDATA[ var map = new GMap(document.getElementById("map")); map.centerAndZoom(new GPoint(-122.141944, 37.441944), 4); var bounds = map.getBoundsLatLng(); var width = bounds.maxX - bounds.minX; var height = bounds.maxY - bounds.minY; i = 0; function timer_handler() { var point = new GPoint(bounds.minX + width * Math.random(), bounds.minY + height * Math.random()); var marker = new GMarker(point); map.addOverlay(marker); msg = document.getElementById('msg'); msg.innerHTML = "i = " + i; if (i % 50 == 0) { map.clearOverlays(); } i++; } setInterval('timer_handler()', 10); //]]> </script> </body> </html>