Aşağıda, bir img etiketinin src'si farklı dataUrls olarak ayarlandığında, belleği sızdırdığını gösteren basit bir sınama durumu oluşturdum. Src başka bir şeye dönüştükten sonra görüntü verilerinin asla boşaltılmayacağı anlaşılıyor.Veriler için img.src ayarlanıyorUrl Leaks Memory
<!DOCTYPE html>
<html>
<head>
<title>Leak Test</title>
<script type="text/javascript">
canvas = null;
context = null;
image = null;
onLoad = function(event)
{
canvas = document.getElementById('canvas');
context = canvas.getContext('2d');
image = document.getElementById('image');
setTimeout(processImage, 1000);
}
processImage = function(event)
{
var imageData = null;
for (var i = 0; i < 500; i ++)
{
context.fillStyle = "rgba(" + Math.floor(Math.random() * 256) + "," + Math.floor(Math.random() * 256) + "," + Math.floor(Math.random() * 256) + "," + Math.random() +")";
context.fillRect(0, 0, canvas.width, canvas.height);
imageData = canvas.toDataURL("image/jpeg", .5);
image.src = imageData;
}
setTimeout(processImage, 1000);
}
</script>
</head>
<body onload="onLoad(event)">
<canvas id="canvas"></canvas>
<img id="image"></img>
</body>
</html>
Bu html sayfasını yüklerseniz, RAM kullanımı zamanla oluşur ve hiçbir zaman temizlenmez. Bu sorun çok benzer: Rapidly updating image with Data URI causes caching, memory leak. Bu bellek sızıntısını önlemek için yapabileceğim bir şey var mı?
Bu tarayıcı nedir? Bir sorun olup olmadığını kontrol edebilirsin. GC, tarayıcı tarafından dahili olarak ele alındığından, tek yapmanız gereken, mantığı yeniden yazmaktır. – K3N
Bu, hem Chrome'da hem de Firefox'ta gerçekleşir, dolayısıyla, teknik özelliklere veya bir şeye göre olduğunu farz ediyorum. –
Henüz hatayı düzelttiler mi? – BrightIntelDusk