当在Google Chrome浏览器中打开几个选项卡达数小时/天时,我注意到某些页面最终会占用大量RAM,以至于整个操作系统(XP)由于分页而无法响应。幸运的话,我最终可以为打开的URL列表添加书签,关闭Chrome,然后重新启动;如果不是,我必须杀死Chrome,并希望我可以恢复打开的URL列表。
- 这是为什么?插件内存泄漏?
- 有没有一种方法可以配置Chrome,以便单个标签页/页面使用的内存不会超过设置的数量?
谢谢。
当在Google Chrome浏览器中打开几个选项卡达数小时/天时,我注意到某些页面最终会占用大量RAM,以至于整个操作系统(XP)由于分页而无法响应。幸运的话,我最终可以为打开的URL列表添加书签,关闭Chrome,然后重新启动;如果不是,我必须杀死Chrome,并希望我可以恢复打开的URL列表。
谢谢。
Answers:
我认为您应该选择购买尽可能多的RAM,以使操作系统能够处理。您不应该限制Chrome的RAM使用量,因为它只会破坏您在网络上的浏览体验。假设您大部分时间都是使用计算机上网,则应该让Chrome获得所需的所有资源,以提供您希望“享受”同时运行这些标签的性能。
我认为没有办法限制每个标签的RAM使用量,但您可以完全限制Chrome的使用量。看这里:
/programming/192876/set-windows-process-or-user-memory-limit
如果我是你,如果我想要流畅的网络冲浪,我宁愿不这样做。
我写了一个Python 2.5程序,当chrome渲染器使用了一定数量的内存时,它们会杀死它们。我在下运行此程序watch
。(请注意,它使用的是Python不附带的psutil模块。)
import sys, os, psutil
if len(sys.argv) == 2:
try:
limit = int(sys.argv[1])
except:
limit = 200 # default 200MB
else:
limit = 200
uid = os.getuid()
for p in psutil.get_process_list():
try:
if (p.name == 'chrome' and any('type=renderer' in part for part in p.cmdline)
and p.uid == uid):
m = p.get_memory_info()
#print p.pid,m, m.rss / 1024 / 1024, m.vms / 1024 / 1024
if (m.rss / 1024 / 1024) > limit: # kill if rss is greater than limit
print 'Killed', p.pid
p.kill()
except psutil.error.NoSuchProcess:
pass
except psutil.error.AccessDenied:
pass
当Chrome无法还原打开的标签页时,我依靠会话伙伴来恢复打开的标签页。
Last Tabs
文件,也无法从该文件还原选项卡。我曾尝试确定格式并从中提取URL。没有成功。而且,我对SQLite的信任比Chrome用于存储当前会话标签的二进制格式要多,这就是SB更好的原因。
到目前为止,我唯一能做到的是在容器内运行chrome并限制容器ram。
但是,这有一些主要警告,
dockerize设置和启动顺序使运行Chrome变得很复杂
首先,Chrome已经使用内核容器将其线程沙箱化;因此,您必须使用一种允许其工作的root权限运行容器。可以避免这种情况,链接容器模型可以这样做。(它几乎完成了它需要做的一切)
您几乎肯定会松开GPU加速
使音频正常工作很复杂,但是可以在链接的容器模型中处理。
保修失效时,无论您期望出什么问题,Chrome都会强烈反对您不要使用更多的ram,并会采取行动并发脾气。
但是它最终确实起作用。
我对将这些内存限制应用于没有预先构建的Docker映像来为您处理的Electron Shell应用程序更感兴趣。
不在主题之列,但我想指出,Firefox在有限的硬件上表现良好,但我认为这并不是真正的答案。
使用TabsOutliner扩展-它将为您提供“关闭”选项卡的简便方法,而无需实际将其从上下文和当前会话列表中删除。很有用。
取消使用大量内存的Tab进程(我注意到,使用Flash的任何东西都倾向于使用500MB +)。当您想继续使用失效的标签时,您可以稍后重新加载它们。
TabMemFree将自动挂起不活动的选项卡。您可以确定挂起非活动标签的时间,至少15分钟。您还可以指示它忽略固定的选项卡。
Tab Wrangler是另一个扩展,可以考虑在您需要更多控制权时自动挂起不活动的选项卡。与TabMemFree一样,您可以确定一个选项卡被视为不活动之前的时间长度,并将其设置为忽略固定的选项卡,但是您可以添加选项来锁定其他选项卡并在不同计算机之间同步选项卡设置。