Google Chrome에서 여러 탭을 몇 시간/일 동안 열어 두면 일부 페이지가 엄청난 양의 RAM을 사용하게 되어 페이징으로 인해 전체 OS(XP)가 응답하지 않게 되는 지점까지 가는 것을 발견했습니다. 운이 좋으면 마침내 열린 URL 목록을 북마크에 추가하고 Chrome을 닫은 다음 다시 시작할 수 있습니다. 그렇지 않은 경우 Chrome을 종료하고 열린 URL 목록을 복구할 수 있기를 바랍니다.
- 왜 그런 겁니까? 플러그인에서 메모리 누수가 발생하나요?
- 단일 탭/페이지가 설정된 양의 RAM을 사용하지 않도록 Chrome을 구성하는 방법이 있나요?
감사합니다.
답변1
내 생각에는 OS가 처리할 수 있는 만큼의 RAM을 구입하는 것이 좋습니다. Chrome의 RAM 사용을 제한하면 웹 서핑 경험이 망가질 뿐이므로 제한해서는 안 됩니다. 대부분의 시간 동안 인터넷 서핑을 위해 컴퓨터를 사용한다고 가정하면, 동시에 탭 실행을 "즐길" 수 있도록 원하는 성능을 제공하기 위해 Chrome이 필요한 모든 리소스를 얻을 수 있도록 해야 합니다.
모든 개별 탭의 RAM 사용량을 제한할 수 있는 방법은 없지만 Chrome의 사용량을 전체적으로 제한할 수는 있습니다. 이봐:
https://stackoverflow.com/questions/192876/set-windows-process-or-user-memory-limit
제가 당신이라면, 원활한 웹서핑을 원한다면 저는 그렇게 하지 않는 편이 낫습니다.
답변2
나는 크롬 렌더러가 일정량의 메모리를 사용할 때 이를 종료시키는 Python 2.5 프로그램을 작성했습니다. 나는 이 프로그램을 에서 실행한다
watch
. (이것은psutilPython에 포함되지 않은 모듈입니다.)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이 열린 탭을 복원하지 못할 때 열린 탭을 복구합니다.
답변3
지금까지 내가 본 유일한 것은 이것을 할 수 있다는 것입니다.컨테이너 내부에서 크롬 실행그리고컨테이너 램 제한.
그러나 여기에는 몇 가지 중요한 주의 사항이 있습니다.
dockerize 설정 및 실행 순서로 인해 Chrome 실행이 복잡합니다.
우선 Chrome은 이미 커널 컨테이너를 사용하여 스레드를 샌드박스화하고 있습니다. 따라서 컨테이너가 작동하려면 일종의 루트 권한으로 컨테이너를 실행해야 합니다. 이는 우회할 수 있으며 연결된 컨테이너 모델이 이를 수행합니다. (거의 필요한 모든 작업을 수행합니다)
거의 확실하게 GPU 가속이 느슨해질 것입니다.
오디오를 작동시키는 것은 복잡하지만 연결된 컨테이너 모델에서 처리됩니다.
보증을 무효화하면 문제가 발생할 것으로 예상되는 것이 무엇이든 Chrome은 더 많은 램을 사용하지 말라는 말을 매우 싫어하며 그에 따라 행동하고 화를 낼 것입니다.
그러나 그것은 궁극적으로 작동합니다.
저는 이러한 램 제한을 미리 빌드된 도커 이미지가 없는 Electron Shell 앱에 적용하는 데 더 관심이 있습니다.
주제에서 벗어났지만 Firefox는 제한된 하드웨어에서 매우 잘 작동한다는 점을 지적하고 싶습니다. 하지만 이것이 실제 답변이라고 생각하지는 않습니다.
답변4
꼭 플러그인일 필요는 없습니다. 웹페이지는 더 이상 정적이지 않습니다. 일부 웹페이지에서는 적지 않은 양의 비동기 활동이 진행되고 있습니다. 플러그인의 활동을 추가하면 몇 가지 알 수 없는 정보가 표시됩니다.
내가 찾은 최선의 해결책은 웹페이지를 종료하고 다시 로드하는 것입니다. AFAIK, 웹페이지에서 사용하는 RAM의 양을 제한할 수 있는 방법은 없습니다.