Microsoft MVP성태의 닷넷 이야기
사파리 웹 브라우저의 메모리 leak 현상 [링크 복사], [링크+제목 복사]
조회: 15173
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

사파리 웹 브라우저의 메모리 leak 현상

사파리 웹 브라우저는 safari.exe 뿐만 아니라 별도로 WebKit2WebProcess.exe를 띄워서 렌더링을 분리하는 것 같습니다.

아래의 화면에 보이는 IE, Chrome, Safari 프로세스는 모두 같은 웹 사이트를 방문했을 때의 상황을 보여주고 있습니다.

memory_leak_1.png

그런데, 유독 사파리의 WebKit2WebProcess.exe는 점점 더 메모리가 커지더니 급기야 다음과 같이 오류를 내버리고 죽고 맙니다.

memory_leak_2.png

WebKit2WebProcess.exe만 문제가 있는 것이 아니고, Safari.exe 자체도 메모리가 다소 증가한 상태이고 더욱 심각한 것은 GDI 리소스가 676에서 7,244개로 어마어마하게 새고 있다는 것입니다.

같은 사이트를 방문 중인 IE와 Chrome의 경우에는 시간은 지났지만 안정적인 리소스 유지를 하고 있는 것을 볼 수 있고.

사파리로 SPA(Single-Page Application)같은 것을 만들 때는 주의를 하셔야겠습니다.




그러게요. ^^ 혹시나 맥용 사파리에서는 홈 그라운드이니만큼 이런 문제가 없을 수도 있겠다 싶어 테스트 해보았는데요. 아래는 역시 같은 응용 프로그램을 방문했을 때의 처음 메모리 사용량입니다.

mac_safari_leak_1.png

시간이 지나자 메모리가 2배 이상으로 뛰었습니다.

mac_safari_leak_2.png

게다가, CPU 사용량이 심상치 않습니다. 같은 사이트를 방문 중인 Chrome은 17.5%이지만 사파리는 42.9%를 치고 있습니다.

mac_safari_leak_3.png




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]







[최초 등록일: ]
[최종 수정일: 11/6/2013]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 



2013-11-05 02시13분
[땡초] 이게 윈도우용만 이럴거에요.
윈도에선 사파리와 크롬은 친척사이 ㅡㅡㅋ
[guest]
2013-11-05 03시11분
테스트를 맥용으로도 해본 결과를 추가했어요. ^^
정성태
2015-02-27 04시41분
[JOE] 맥에서 사파리를 메인 웹브라우저로 쓰고 있습니다. 2년간 아무 문제 없이 사용했습니다만. 바로 어제 친구가 비슷한 증상을 호소하면서 몇 개의 스크린샷을 보내왔습니다. 겨우 한개의 탭과 메모 앱 한개를 사용할 뿐이었는데, 사용가능한 메모리가 1기가 미만이더군요.. 그래서 일단 재부팅후 같은 증상이 나타나면 다시 스크린샷을 보내달라고 했는데, 아주 빈번히 일어나는 문제였습니다.

[guest]
2015-02-28 12시11분
@JOE 사실 개발자 입장에서는 이해가 되긴 합니다. ^^ Javascript 인터프리터, Garbage Collector, CSS 처리, HTML 처리(HTML4 이하는 물론이고 HTML5 처리), WebGL처리, SVG처리... 등등 이미 웹 브라우저에 포함된 구성요소가 너무나 많기 때문에 개발사 입장에서도 수용한계를 넘어섰는지도 모르겠습니다. 어찌보면, 현대의 웹 브라우저 프로그램은 간략화된 운영체제 수준이니까요. ^^;
정성태

[1]  2  3  4  5  6  7  8  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
552정성태2/20/20241010Windows - 바탕화면에 검은 영역의 빈 공간을 삭제하는 방법
551정성태2/18/20241087DropBox - PermissionError: [WinError 5] Access is denied: 'C:\\Users\\...'
550정성태10/31/20231977윈도우 탐색기의 "새로 만들기" 메뉴에 "텍스트 문서" 항목이 없는 경우 - 두 번째 이야기
549정성태4/20/20233976youtube-dl을 파이썬으로 실행하는 방법
548정성태4/15/20233583Galaxy Buds2를 Windows에 연결한 경우 (Stereo가 아닌) Mono로 들리는 문제
547정성태1/28/20234041JetBrains Omea Reader에서 TLS 1.2 모드의 https 서버로부터 RSS 구독이 안 되는 경우 해결 방법파일 다운로드1
546정성태12/17/20225143blizzless-diiis 소개 - (C#으로 만들어진) Diablo 3 오픈 소스 서버
545정성태11/29/20226379[종료] [2차] "시작하세요 C# 10" 서적 나눔합니다. (5권)
544정성태11/6/20223895Camtasia - "변경된" 볼륨을 일괄 설정하는 방법
543정성태11/4/20226554[종료] "시작하세요 C# 10" 서적 나눔합니다. (4권 한정)
542정성태6/8/20225419입력 포커스를 가져가는 응용 프로그램을 확인하는 방법 - FocusLogger
541정성태6/7/20225163특정 USB 장치가 인식이 안 되는 문제
540정성태5/25/20224972구글 검색 시 "ko-kr"이 아닌 "en-us"에 해당하는 자료 검색 방법
539정성태5/23/20224891문법에 맞지 않는 learn.microsoft.com의 C++ 소스 코드
538정성태5/18/20225041WACOM Intuos Pro PTH-660 사용 후기 (개발자 입장)
537정성태3/17/20225482eFriend Plus 설치 후 실행이 안 되는 문제가 발생한다면?
536정성태1/13/202270372021년 블로그 기부 수익 공개 ^^
535정성태11/25/202175242021년 새로운 PC
534정성태10/19/20217685파판14 - 에오르제아의 시간 알람을 위한 C# WinForms 응용 프로그램 [1]파일 다운로드1
533정성태10/6/202110341모바일 브라우저에서 "비공개 연결이 아닙니다." NET::ERR_CERT_AUTHORITY_INVALID 오류가 발생하는 현상 [1]
531정성태9/1/2021699316GB로도 모자란 근래의 개발 환경
530정성태7/27/20215375그동안 마이크로소프트 계정으로 가입한 웹 서비스 및 응용 프로그램을 알아내는 방법
529정성태7/18/20215727C:\$Windows.~BT 용도와 삭제하는 방법
528정성태7/17/20217360Logitech Webcam이 있는 경우, %LOCALAPPDATA%\temp\LWSDebugOut.txt 파일의 (무제한) 증가 현상
527정성태7/13/20215585Microsoft Edge의 뉴스 알림 창 끄는 방법
[1]  2  3  4  5  6  7  8  9  10  11  12  13  14  15  ...