为Google Maps标记构建哈希时发生内存泄漏

时间:2019-05-20 12:34:26

标签: ruby-on-rails memory-leaks gmaps4rails

我正在执行一项任务,以在Google地图上显示位置标记。我的桌子上有大约4万条记录。我需要为所有这些记录创建一个位置标记。我将宝石gmaps4rails与我的ruby on rails应用程序一起使用。我正在使用“乘客独立”作为我的应用服务器。

这是我的代码

my_models_controller.rb

 def index
   @markers = []
   MyModel.select(:id, :first_name, :latitude,:longitude).find_in_batches do |batch_records|
     @markers += Gmaps4rails.build_markers(batch_records) do |record, marker|
       marker.lat record.latitude
       marker.lng record.longitude
       marker.title record.first_name
       marker.infowindow "<span> #{record.first_name} </span> "
     end
   end
 end

index.html.haml

:javascript
  var markers_json = #{raw @markers.to_json};

%h1

- markers = nil
#my_model_map.map{ style: 'width: 100%; height: 600px;' }

my_model.js

if(typeof Gmaps !== 'undefined' && $('#my_model_map').length) {
    handler = Gmaps.build('Google', { markers: { maxRandomDistance: null } });
    handler.buildMap({ provider: {}, internal: { id: 'my_model_map' } }, function() {
        if(typeof markers_json !== 'undefined') {
            markers = handler.addMarkers(markers_json);
            handler.bounds.extendWith(markers);
            handler.fitMapToBounds();
        }
    });
}

我尝试选择所需的列并添加了批处理以减少内存消耗。但是,在为所有这些记录的谷歌地图标记构建哈希时,仍然需要大约200 MB。

这里的问题是,它在处理每个请求后从不释放此内存。并且内存增加是增量的。谁能建议我代码的哪一部分会导致此内存泄漏?

0 个答案:

没有答案