У меня странная ситуация с веб-приложением, которое продолжает загружать память в Firefox / Windows.В основном приложение обновляет данные на странице, используя POST вызов сервера, осуществляемый через jQuery
.Каждый раз, когда выполняется вызов, потребление памяти Firefox увеличивается на величину, которая непропорциональна размеру данных, возвращаемых с сервера.
Чтобы проверить, относится ли это к моему приложению, я написал простое тестовое приложение, используя Sinatra (Ruby 1.9.2-p318) и jQuery (1.7.1).Приложение отправляет запрос на сервер каждые 10 секунд и загружает HTML-блок размером 1 МБ на страницу:
На стороне сервера:
require 'rubygems'
require 'sinatra'
require 'erb'
require 'json'
configure do
set :static, true
end
post '/' do
content_type :json
# a simple html file containing ~ 1MB of data
html = File.read( File.join(File.dirname(__FILE__), 'html.txt' ) )
# convert to JSON and return to the client
return { "html" => html }.to_json
end
На стороне клиента:
<!doctype html>
<html>
<head>
<script type="text/javascript" src="/js/jquery-1.7.1.min.js"></script>
</head>
<body>
<h1>Test Page</h1>
<div id="results" style="display: none;"></div>
<script type="text/javascript">
$(function(){
// refresh the data every 10 sec
setInterval( function(){ doRefresh(); }, 10 * 1000 );
});
function doRefresh() {
$.post('/', function(data){
$('#results').html( data.html );
// attempt to free some memory
delete data;
}, 'json');
}
</script>
</body>
</html>
То, что, кажется, не изменяется, - то, что потребление памяти процессом Firefox (наблюдаемый через диспетчер задач Windows) продолжает расти в 10 мегабайт с каждым вызовом.Несмотря на то, что новые данные заменяют старые на странице, кажется, что Firefox не использует это выделенное пространство в памяти.Оказывается, это полностью загружает память, если страница остается открытой на ночь (на простых компьютерах объемом 4 ГБ).
Это проблема с JavaScript или что-то в Firefox?Можно ли как-нибудь форсировать сборку мусора?спасибо.
РЕДАКТИРОВАТЬ : Эта проблема с памятью не наблюдалась в Google Chrome (13.0.782.112 в Win7).