有助于改善我个人的高内存使用率的个人解决方案,或者说为什么它没有用

Fer*_*doH 5 safari macos memory-management osx-lion

好.我有点生气,因为我在带有8GB内存的i7 MPB上运行Mac OS Lion,而且Safari的性能始终会降低.

因此,我注意到不仅Safari.app消耗了异常的内存量,而且它的一对名为"Safari Web Content"(消费更多).

对此感到恼火,我决定杀死那个"Safari Web Contant"实例(它们总是成对出现,好奇.但是,无论如何),毕竟Safari.app是主要的应用程序.发生了什么?您知道Safari中的所有选项卡何时自动刷新?出现相同的效果:Safari Web Content的内存使用率下降(退出,然后从零点重新启动),所有选项卡都会在选择时刷新.它让我相信那些标签的自动刷新有时会发生,只不过是一种以非常奇怪的方式释放内存的方式(用葡萄牙语称为"chuncho").

好的,那又怎样?好吧,如果这似乎(至少对我来说)是更好地处理内存消耗的"官方"方式,我想如果我做同样的话也没关系,对吧?

因此,我创建了一个小脚本,每分钟作为crontab作业运行,检查"Safari Web Content"内存使用率是否过高,如果是,则将其杀死.

这里是:

#!/bin/bash

filename=".tt_0e92309ei2390i209ei9203"
LIMIT=6

ps -eo pmem,pid,args | grep WebProcess.app | grep -v grep | cut -d"/" -f1 > $filename

while read line
do
  mem=`echo "${line}"| awk '{print $1}'`
  mem=$(echo $mem | sed -e 's/,/./g')
  pid=`echo "${line}"| awk '{print $2}'`

  status=$(echo "$mem > $LIMIT" | bc -l)

  if [ "$status" -eq "1" ]
  then
    kill $pid
  fi

done < $filename

rm $filename
Run Code Online (Sandbox Code Playgroud)

不介意随机命名的文件名,也不介意我可能做过的奇怪事情("chunchos"):P该脚本基本上检查是否有任何"Safari Web内容"进程消耗超过我的内存的$ LIMIT百分比.由于我有8GB的内存,我虽然6%已经太多了(注意之前,它有时设法超过这些6%),所以这个过程应该被杀死!通过该脚本在我的crontab上执行,每1分钟进行一次验证.

结果?Safari现在的表现更好!:)我不需要每隔一个半小时手动重置一次Safari,这让我非常高兴:)(即使背景上几乎相同)

副作用?Weeell.刷新选项卡并不总是需要的.我能想到一个明显的副作用.如果您的"Safari Web内容"过程在某些重要操作过程中被关闭,您将失去一切.例如,如果我的内存消耗过高而我倾向于这个,并且脚本杀死了我的内容过程,我将失去一切.

很高兴,我已经使用该剧本已有好几天了,但仍然没有失去任何东西.

即使这个解决方案给我提供了更好的浏览体验,但我仍然不会因为丢失一些文字而烦恼,我知道这是可能的.因此,我想知道你们是否知道如何释放进程内存的特定区域.

我问这个是因为当我在"Safari Web Content"的pid上运行vmmap时,我注意到所使用的大部分内存都是在Malloc Zone"JavaScriptCore FastMalloc_0xaca89d40"中分配的.这样,我认为如果我可以释放内存,我可以在Safari上获得更好的体验,而不会有丢失太多的风险(当然,这将取决于Safari如何处理那种微妙的意外清除内存,但是我有信仰).

让我们走到尽头.你认为我的方法是好的,还是你能想到做我做的任何其他副作用?此外,您知道我是否可以清除该特定区域的记忆?我不介意我是否需要root访问权限(至少是出于测试目的).最后,在使用Safari时,您是否也开发了自己的方式来提升浏览体验?如果是这样,请分享!:)

费尔南多.

小智 0

不,您不能强制另一个进程释放内存。无论如何,这几乎肯定会使其崩溃(这实际上就是您通过终止 Safari Web Content 进程所做的事情)。