【问题标题】:jQuery and Google Maps error shuts my laptop down! Memory error?jQuery 和谷歌地图错误关闭了我的笔记本电脑!内存错误?
【发布时间】:2011-08-25 10:51:36
【问题描述】:

我有一个使用脚本 (jQuery) 运行的 Google 地图,并使用部署在同一服务器中的一堆 RESTful Web 服务中的标记和多边形。一切似乎都运行良好,但在运行模拟几分钟后(只需在 n 秒后使用 setInterval 函数重新绘制叠加层),我的计算机就会关闭!我什至没有收到Blue Screen of Death (BSoD),电脑就关机了!

我意识到它与内存有关(删除其他覆盖代码,需要更长的时间才能关闭)。我想我确实释放了内存,正如你在这个 sn-p 中看到的那样,但我不确定。我错过了什么?

function deleteOverlay(overl) {
    if (overl)
    {
        for (i in overl)
        {
            overl[i].setMap(null);
        }
        overl.length = 0;
        overl = [];
    }
}

function populate(map) {
    var infowindow = new google.maps.InfoWindow({content: ''});
    jQuery.get("/MyServiceRESTful/resources/passengers/", {}, function (data) {
        deleteOverlay(passengersArray);
        jQuery(data).find("passenger").each(function () {
            var marker = jQuery(this);
            var idtxt = marker.attr("id");
            var sntxt = marker.attr("snippet");
            var location = marker.attr("lat")+', '+marker.attr("lng");
            var latlng = new google.maps.LatLng(parseFloat(marker.attr("lat")),parseFloat(marker.attr("lng")));
            var marker = new google.maps.Marker({
                            position : latlng,
                            map : map,
                            title : marker.attr("id") + " [" + marker.attr("snippet") + "]",
                            animation : google.maps.Animation.NONE,
                            icon : passengermarker
                         });
            var contentString = 'Hi';
            google.maps.event.addListener(marker, 'mouseover', function () {
                infowindow.content = contentString;
                infowindow.open(map, marker);
            });
            passengersArray.push(marker);
        });
    });

    //More similar calls
}

【问题讨论】:

  • 我不认为这是浏览器方面的问题..您的浏览器不会导致系统崩溃..看起来您的服务器处理这些请求有问题..可能是您发送的请求数量异常多.. 观察开发工具中的“网络”选项卡,了解已触发的请求数
  • 感谢您的回复。检查服务器日志后,您可能是对的,它每 6 毫秒显示来自同一服务的请求。我每秒只请求 4 次服务(来自脚本),这是服务器当然可以处理的。不确定如何更好地控制这个请求数,可能与 gmaps 或 jQuery 如何获取请求有关?

标签: javascript jquery google-maps memory-leaks system-shutdown


【解决方案1】:

在上面的聊天中讨论并查看您的代码之后,您似乎没有对您的网络服务器进行任何调用,这导致您的服务器崩溃。

我建议您对服务器进行动态调用,也就是说,根据请求进行调用,而不是出于任何原因预先加载它。如果作为一个人,您最终要杀死服务器,我可以'不要想象当您的网站上线时会发生什么.. 理想情况下,尽可能按需将事件附加到您的地图对象并仅在必要时触发它们。

我希望这是您可以采取的有效方法,或者请更新问题以向我们展示更多代码以及您想要实现的目标。..

【讨论】:

  • 看来我需要回到绘图板上了。您对 Web 服务中的实际问题以及处理请求的方式是正确的。可能需要缓存一些结果或限制每秒的请求数。如果有的话,将发布一个新问题。
猜你喜欢
  • 1970-01-01
  • 2014-02-21
  • 2013-11-15
  • 1970-01-01
  • 2021-07-15
  • 1970-01-01
  • 2014-04-21
  • 2016-05-09
  • 2023-03-15
相关资源
最近更新 更多