Chrome에서 RAM 사용을 제한하시나요?

Chrome에서 RAM 사용을 제한하시나요?

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

  1. 나는 크롬 렌더러가 일정량의 메모리를 사용할 때 이를 종료시키는 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
    
  2. 나는 의지한다세션 버디Chrome이 열린 탭을 복원하지 못할 때 열린 탭을 복구합니다.

답변3

지금까지 내가 본 유일한 것은 이것을 할 수 있다는 것입니다.컨테이너 내부에서 크롬 실행그리고컨테이너 램 제한.

그러나 여기에는 몇 가지 중요한 주의 사항이 있습니다.

  • dockerize 설정 및 실행 순서로 인해 Chrome 실행이 복잡합니다.

  • 우선 Chrome은 이미 커널 컨테이너를 사용하여 스레드를 샌드박스화하고 있습니다. 따라서 컨테이너가 작동하려면 일종의 루트 권한으로 컨테이너를 실행해야 합니다. 이는 우회할 수 있으며 연결된 컨테이너 모델이 이를 수행합니다. (거의 필요한 모든 작업을 수행합니다)

  • 거의 확실하게 GPU 가속이 느슨해질 것입니다.

  • 오디오를 작동시키는 것은 복잡하지만 연결된 컨테이너 모델에서 처리됩니다.

  • 보증을 무효화하면 문제가 발생할 것으로 예상되는 것이 무엇이든 Chrome은 더 많은 램을 사용하지 말라는 말을 매우 싫어하며 그에 따라 행동하고 화를 낼 것입니다.

그러나 그것은 궁극적으로 작동합니다.

저는 이러한 램 제한을 미리 빌드된 도커 이미지가 없는 Electron Shell 앱에 적용하는 데 더 관심이 있습니다.


주제에서 벗어났지만 Firefox는 제한된 하드웨어에서 매우 잘 작동한다는 점을 지적하고 싶습니다. 하지만 이것이 실제 답변이라고 생각하지는 않습니다.

답변4

꼭 플러그인일 필요는 없습니다. 웹페이지는 더 이상 정적이지 않습니다. 일부 웹페이지에서는 적지 않은 양의 비동기 활동이 진행되고 있습니다. 플러그인의 활동을 추가하면 몇 가지 알 수 없는 정보가 표시됩니다.

내가 찾은 최선의 해결책은 웹페이지를 종료하고 다시 로드하는 것입니다. AFAIK, 웹페이지에서 사용하는 RAM의 양을 제한할 수 있는 방법은 없습니다.

관련 정보