我正在执行一项任务,以在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。
这里的问题是,它在处理每个请求后从不释放此内存。并且内存增加是增量的。谁能建议我代码的哪一部分会导致此内存泄漏?