來自長時間潛伏者但本網站頻繁用戶的問候。這裏有很多信息。我正在研究我的第一個真正的Web項目,並隨時學習。隱藏或顯示圖像時Chrome內存泄露
這是一個醫療應用程序,有時需要顯示警報圖標(包含圖像的div),以引起對可能有麻煩的患者的注意。我一直在使用下面的JS/jQuery代碼通過使用css類來顯示適當的圖標。我的CSS技能並不好,所以很可能這樣做可以更有效率,但這不是我的問題的重點。
當我以500毫秒的時間間隔(每次更新後使用setTimeout)爲128位不同的患者運行以下代碼時,Chrome渲染進程以約50MB /小時的速度(每個任務管理器或SysInternals進程管理器)進行內存消耗。但是,Chrome開發工具不會顯示任何內存使用量或DOM節點數的增加。堆快照不會隨着時間顯示任何重大變化。但是如果我評論這部分,「泄漏」就會消失。
我錯過了什麼?
// Show appropriate alarm icon, or hide all
iconClass = null;
if (this.Status && displayMode === 'RealTime') {
if (this.Status.Alarm === 'Active') {
flashState = ((this.drawTickCount % 4) < 2);
iconClass = (flashState) ? 'alarmOn' : 'alarmOff';
}
else if (this.Status.Alarm === 'Paused') {
iconClass = 'alarmPaused';
}
}
// Hide all icons
this.div.find('div.alarmIcon').css('visibility', 'hidden');
// Show the active icon, if any
if (iconClass) {
this.div.find('div.' + iconClass).css('visibility', 'visible');
}
謝謝!
這是你的腳本所做的唯一事情嗎? – qwertynl
得到了一個jsfiddle.net示例,顯示了這種情況? –
我不知道它是否會導致內存泄漏,但是您同時創建了'iconClass'和'flashState'全局變量,這是不好的做法。當你聲明它們時,在它們前面粘上一個'var','var iconClass = null;'和'var flashState =((this.drawTickCount%4)<2);' – RustyToms