TIL 22.10.04 | 그래픽(비트맵, 벡터), 가비지 컬렉션 (메모리 생존주기)

HyeonWooGa·2022년 10월 4일
0

TIL

목록 보기
30/39

1. 그래픽

비트맵(래스터)벡터
기반기술픽셀수학적으로 계산된 Shape
특징사진과 같이 색상 조합이 다양한 이미지에 적합로고, 일러스트와 같이 제품에 적용되는 이미지에 적합
확대계단현상, 꺠짐현상 발생품질 저하 없이 확대 가능
파일 용량큰 크기의 이미지는 큰 파일 사이즈크기에 상관없이 동일한 파일 사이즈
상호 변환벡터로 변환하는 것이 비교적 오래 걸림쉽게 비트맵(래스터) 이미지로 변환 가능
파일 포맷jpg, gif, png, bmp, psdsvg, ai
웹에서 사용성jpg, gif, png 널리 쓰임svg 포맷은 모던 브라우저에서 대부분 지원


2. 가비지 컬렉션

개요

  • 저수준 언어인 C 언어에서는 malloc(), free() 등으로 개발자가 메모리 직접 관리
  • 고수준 언어는 자동으로 메모리를 할당하고 해제하는 가비지 컬렉션 이 내장되어 있습니다.

메모리 생존 주기

   1. 필요할 떄 개발자가 할당합니다.
   2. 할당된 메모리를 사용합니다. (Read and Write)
   3. 메모리가 더이상 필요하지 않으면 해제합니다.
저수준 언어고수준 언어
1명시적 사용암묵적 작동
2명시적 사용명시적 사용
3명시적 사용암묵적 작동

대표적인 가비지 컬렉션 방법

  • 레퍼런스 카운팅

    • 참조 횟수 계산
    • 순환 참조시에 해당 객체가 가비지 컬렉션에 갈 수 없는 문제 발생
  • 트레이싱

    1. 루트들의(window, global) 완전한 트리 목록을 만들냅니다.
    2. 모든 루트와 그 자식들을 검사해서 루트가 닿을 수 없는 것들은 가비지로 표시합니다.
    3. 가비지 컬렉터가 루트에 닿지 않은 모든 메모리를 OS 에 반환합니다.

    • 일반적으로 레퍼런스 카운팅 방법보다 나은 방법이라고 여겨집니다.

메모리 누수

  • 개발자의 실수
  • 개발자는 더 이상 사용되지 않을 것이라 생각했지만, 어떠한 이유로 활성화 상태인 루트 트리 안에 존재하는 메모리 조각들

  • 대표적인 원인 (예상치 못한 참조)
    • 우발적으로 생선된 전역변수
    • DOM 외부에서의 참조
    • 클로저 (Closure)

profile
Aim for the TOP, Developer

0개의 댓글