본문으로 건너뛰기

"메모리" 태그로 연결된 7개 게시물개의 게시물이 있습니다.

모든 태그 보기

V8 힙 스냅샷 가속화

· 약 9분
Jose Dapena Paz

이 블로그 게시물은 José Dapena Paz (Igalia)가 작성했으며, Jason Williams (Bloomberg), Ashley Claymore (Bloomberg), Rob Palmer (Bloomberg), Joyee Cheung (Igalia), Shu-yu Guo (Google)의 기여로 작성되었습니다.

이 게시물에서는 V8 힙 스냅샷과 관련된 Bloomberg 엔지니어들이 발견한 몇 가지 성능 문제와 이를 해결하여 JavaScript 메모리 분석을 그 어느 때보다 빠르게 만든 방법에 대해 설명합니다.

문제

Bloomberg 엔지니어들은 JavaScript 애플리케이션에서 메모리 누수를 진단하려 하고 있었습니다. 이 애플리케이션은 메모리 부족(Out-Of-Memory) 오류로 실패하고 있었습니다. 테스트된 애플리케이션의 경우, V8 힙 한도가 약 1400 MB로 설정되어 있었습니다. 일반적으로 V8의 가비지 컬렉터는 힙 사용량을 이 한도 이하로 유지할 수 있어야 하므로 이러한 실패는 누수가 있을 가능성을 나타냅니다.

C++에 시간적 메모리 안전성 레트로피팅

· 약 9분
안톤 비키네브, 마이클 립파우츠 ([@mlippautz](https://twitter.com/mlippautz)), 한네스 페이어 ([@PayerHannes](https://twitter.com/PayerHannes))
노트

참고: 이 게시물은 원래 Google Security Blog에 게시되었습니다.

Chrome의 메모리 안전성은 사용자를 보호하기 위해 끊임없이 노력 중입니다. 우리는 악의적 행위자를 앞서기 위해 다양한 기술을 끊임없이 실험하고 있습니다. 이러한 정신으로, 이번 게시물은 C++의 메모리 안전성을 향상시키기 위해 힙 스캐닝 기술을 사용하는 우리의 여정에 관한 것입니다.

V8에서의 포인터 압축

· 약 18분
Igor Sheludko와 Santiago Aboy Solanes, *포인터 압축 전문가들*

메모리와 성능 사이에는 항상 끊임없는 싸움이 있습니다. 사용자로서 우리는 빠르면서도 가능한 적은 메모리를 소비하기를 원합니다. 불행히도 일반적으로 성능을 향상시키면 메모리 소비가 증가하고 (그 반대도 마찬가지입니다).

쓰레기 토크: 오리노코 가비지 컬렉터

· 약 11분
Peter ‘the garbo’ Marshall ([@hooraybuffer](https://twitter.com/hooraybuffer))

지난 몇 년 동안 V8 가비지 컬렉터(GC)는 많은 변화를 겪었습니다. 오리노코 프로젝트는 순차적으로 중단되는 가비지 컬렉터를 대부분 병렬적이고 동시적으로 실행 가능한 컬렉터로 변환시켰으며, 점진적 대체 방식도 포함했습니다.

게으름에 대한 인턴십: 비최적화된 함수의 게으른 언링크

· 약 9분
줄리아나 프랑코 ([@jupvfranco](https://twitter.com/jupvfranco)), 게으름 전문가

약 3개월 전에 저는 V8 팀 (구글 뮌헨)에서 인턴으로 합류했으며, 그 이후로 VM의 _Deoptimizer_라는 완전히 새로운 프로젝트에 대해 작업하고 있습니다. 이는 매우 흥미롭고 도전적인 프로젝트임을 입증했습니다. 제 인턴십 첫 번째 부분은 VM의 보안성을 개선하는 데 초점을 맞췄습니다. 두 번째 부분은 성능 개선에 중점을 두었습니다. 즉, 이전에 비최적화된 함수를 언링크할 때 사용된 데이터 구조를 제거하는 작업을 수행했으며, 이는 쓰레기 수집 중 성능 병목현상을 일으킨 문제였습니다. 이 블로그 게시물은 제 인턴십의 두 번째 부분에 대해 설명하며, V8이 비최적화된 함수들을 어떻게 언링크했는지, 이를 어떻게 변경했는지, 그리고 얻은 성능 향상에 대해 설명합니다.

크롬을 위한 한 걸음, V8을 위한 거대한 도약

· 약 2분
힙의 수호자들 울란 데겐바예프, 하네스 파이어, 미카엘 립파우츠, 그리고 DevTools 전사 알렉세이 코지야틴스키

V8은 힙 크기에 대해 하드 제한을 가지고 있습니다. 이는 메모리 누수를 가진 애플리케이션에 대한 안전장치 역할을 합니다. 애플리케이션이 이 하드 제한에 도달하면, V8은 일련의 최후의 쓰레기 수집을 수행합니다. 쓰레기 수집이 메모리를 해제하는 데 도움이 되지 않으면, V8은 실행을 중지하고 메모리 부족 실패를 보고합니다. 하드 제한이 없다면, 메모리 누수가 있는 애플리케이션이 시스템 메모리를 모두 사용하여 다른 애플리케이션의 성능에 악영향을 미칠 수 있습니다.

V8 메모리 소비 최적화

· 약 7분
V8 메모리 정화 엔지니어들 울란 데겐바에브, 마이클 리파우츠, 하네스 파이어, 그리고 툰 베르바에스트

메모리 소비는 자바스크립트 가상머신 성능상의 트레이드오프 공간에서 중요한 측면입니다. 지난 몇 달 동안 V8 팀은 현대 웹 개발 패턴을 대표하는 여러 웹사이트를 분석하고 메모리 사용량을 크게 줄였습니다. 이번 블로그 포스트에서는 우리가 분석에 사용한 작업과 도구를 소개하고, 가비지 컬렉터에서의 메모리 최적화를 개관하며, V8의 파서와 컴파일러에서 소비되는 메모리를 어떻게 줄였는지 보여줍니다.