Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery和谷歌地图错误关闭我的笔记本电脑!内存错误?_Javascript_Jquery_Google Maps_Memory Leaks_System Shutdown - Fatal编程技术网

Javascript jQuery和谷歌地图错误关闭我的笔记本电脑!内存错误?

Javascript jQuery和谷歌地图错误关闭我的笔记本电脑!内存错误?,javascript,jquery,google-maps,memory-leaks,system-shutdown,Javascript,Jquery,Google Maps,Memory Leaks,System Shutdown,我有一个运行着脚本(jQuery)的GoogleMap,并使用部署在同一服务器上的一系列RESTfulWeb服务中的标记和多边形。一切似乎都很好,但在运行模拟几分钟后(只需在n秒后使用setInterval功能重新绘制覆盖图),我的计算机就关闭了!我甚至没有得到(BSoD),计算机只是关闭 我意识到这与内存有关(删除其他重叠代码,需要更长的时间)。我想我确实释放了内存,正如你在这段代码中看到的,但我不确定。我错过了什么 function deleteOverlay(overl) { if

我有一个运行着脚本(jQuery)的GoogleMap,并使用部署在同一服务器上的一系列RESTfulWeb服务中的标记和多边形。一切似乎都很好,但在运行模拟几分钟后(只需在n秒后使用
setInterval
功能重新绘制覆盖图),我的计算机就关闭了!我甚至没有得到(BSoD),计算机只是关闭

我意识到这与内存有关(删除其他重叠代码,需要更长的时间)。我想我确实释放了内存,正如你在这段代码中看到的,但我不确定。我错过了什么

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
}

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

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


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

我不认为这是浏览器方面的问题。。您的浏览器不会导致系统崩溃。。看起来您的服务器在处理这些请求时出现了问题。。可能是您发送的请求数量异常多。。查看dev tools中的Network选项卡,查看firedThanks请求的数量。在检查服务器日志后,您可能会发现它每6毫秒显示一次来自同一服务的请求。我每秒只请求4个服务(来自脚本),这是服务器当然可以处理的。不确定如何更好地控制这一数量的请求,可能与gmap或jQuery如何获得请求有关?似乎我需要回到绘图板上。关于web服务中的实际问题以及处理请求的方式,您是对的。可能需要缓存一些结果或限制每秒的请求数。如果有的话,我会发布一个新问题。