sgr*_*ove 8 google-chrome google-chrome-extension google-chrome-devtools
我使用Chrome的chrome.extension.sendMessage()在长寿命页面中看到相当大的内存泄漏
在将〜200k事件从Content-Script发送到Background-Page作为测试后,chrome.Event的保留大小约为~50MB堆快照中保留内存的80%
我一直试图追查我可能犯的任何错误,关闭一些变量并防止它被GC,但它似乎与Chrome的事件系统的实现有关
有没有人碰到这样的事情,或看到内存泄漏与内容脚本的极长期扩展与bg页面喋喋不休?
我的Content-Script方面的代码:
csToBg = function(message) {
var csToBgResponseHandler = function(response) {
console.log("Got a response from bg");
};
var result = chrome.extension.sendMessage(null, message, csToBgResponseHandler)
};
Run Code Online (Sandbox Code Playgroud)
在背景页面,一个简单的ACK功能(迷信地避免https://code.google.com/p/chromium/issues/detail?id=114738):
var handleIncomingCSMessage = function(message, sender, sendResponse) {
var response = message;
response.acked = "ACK";
window.console.log("Got a message, ACKing to CS")
sendResponse(response);
}
Run Code Online (Sandbox Code Playgroud)
以这种方式在Chrome 23.0.1271.97中发送~200k消息后,堆快照如下所示: 
在页面的生命周期中,内存似乎永远不会被回收,我对如何修复它感到难过.
编辑:这是一个标准的背景页面,不是一个活动页面.
| 归档时间: |
|
| 查看次数: |
1683 次 |
| 最近记录: |