힙 메모리 단편화

2022. 9. 16. 15:40·개발정보
반응형

메모리 단편화? 

내부 단편화와 외부 단편화로 나뉜다. 

 

내부 단편화 

프로세스에서 필요로 하는 메모리의 양보다 더 많이 할당된 것을 말한다. 

20mb만 필요한 메모리가 30mb가 할당된다면 10mb의 내부 단편화가 발생한다. 

 

외부 단편화 

메모리를 할당하고 난 다음에 작은 크기의 조각들이 남아서 사용할 수 없는 

공간이 많아지는 것을 말한다. 

 

해결방법으론 크게 3가지가 있다. 

1. 페이징 

2. 세그멘테이션

3. 메모리 풀

 

페이징 ?

가상 메모리를 사용한다. 

 

사용하지 않는 프레임을 페이지에 옮기고, 필요한 메모리를 페이지 단위로 프레임에 옮기는 방법.

페이징 기법을 사용하면 외부 단편화 문제는 해결할 수 있지만 페이지 단위를 작게 하지 않는 

이상 내부 단편화는 해결하지 못한다. 

 

※ 페이지 ?

보조기억장치를 이용한 가상 메모리를 같은 크기의 블록으로 나눈 것

 

※ 프레임 ? 

RAM을 페이지와 같은 크기로 나눈 것

 

세그멘테이션 ?

가상 메모리를 사용한다. 

 

페이징에서 같은 크기로 가상 메모리를 분할했다면, 이번에는 크기가 다른 단위로 메모리를 

분할해서 할당하는 방식이다. 

 

필요한 만큼 할당하기 때문에 내부 단편화는 발생하지 않지만 중간 프로세스를 해제하면 

나타나는 영역에 외부 단편화는 여전히 발생하게 된다. 

 

메모리 풀 ? 

가상 메모리를 사용한다. 

 

필요한 메모리 공간을 필요한 크기, 개수만큼 사용자가 직접 지정해서 할당받아 필요할 때마다 

사용하고 반납하는 기법이다. 

 

필요한 만큼 할당하기 때문에 내부 단편화는 발생하지 않으며, 미리 공간을 할당하고 사용해서 

외부 단편화 또한 발생하지 않는다. 

 

하지만 미리 메모리에 할당해서 사용하지 않는 순간에도 메모리 자체에는 할당이 되어 있어 

메모리 누수가 발생할 수 있다.  

반응형
저작자표시 비영리 변경금지 (새창열림)

'개발정보' 카테고리의 다른 글

Git Flow  (1) 2022.09.24
메모리  (1) 2022.09.17
Github 동작 원리  (0) 2022.09.14
웹소켓  (0) 2022.06.06
Side Effect  (1) 2022.05.16
'개발정보' 카테고리의 다른 글
  • Git Flow
  • 메모리
  • Github 동작 원리
  • 웹소켓
잉여개발자
잉여개발자
풀스택 개발자를 목표로 잉여롭게 개발 공부도 하면서 다양한 취미 생활도 즐기고 있는 잉여 개발자입니다.
  • 잉여개발자
    잉여로운 개발일지
    잉여개발자
    • 분류 전체보기 (789)
      • 개발정보 (36)
      • 개발환경 (7)
      • 개발생활 (19)
      • React (141)
        • 이론 (23)
        • 기능 (12)
        • 실험실 (88)
        • 버그 (6)
        • 패스트캠퍼스 (9)
        • Npm (3)
      • React Native (28)
        • 공통 (6)
        • TypeScript (3)
        • JavaScript (18)
        • 버그 (1)
      • Next.js (30)
        • 이론 (13)
        • 실험실 (13)
        • 버그 (3)
      • Web (35)
      • 알고리즘 (202)
        • 풀이 힌트 (39)
      • JavaScript (47)
      • TypeScript (29)
        • 기초 (27)
        • 실험실 (2)
      • Node.js (13)
        • 이론 (0)
        • 기능 (3)
        • 실험실 (9)
        • 버그 (1)
      • 도커 (4)
      • CCNA (22)
        • 이론 (4)
        • 문제 (18)
      • 취미생활 (167)
        • 잉여로운 칵테일 (2)
        • 잉여의 식물키우기 (130)
        • 잉여로운 여행기 (11)
        • 잉여의 제2외국어 (21)
        • 잉여로운 책장 (2)
      • Java (1)
        • Java의 정석 (1)
      • 꿀팁 공유 (3)
  • 태그

    리액트
    타입스크립트
    바질 키우기
    바질
    다이소
    javascript
    webpack
    리얼클래스
    타일러영어
    next.js
    Node.js
    ChatGPT
    영어회화
    typescript
    네이버 부스트캠프
    덤프
    영어독학
    알고리즘
    자바스크립트
    Babel
    리얼학습일기
    네트워크
    react
    CSS
    프로그래머스
    CCNA
    redux
    ReactNative
    식물
    Docker
  • hELLO· Designed By정상우.v4.10.1
잉여개발자
힙 메모리 단편화
상단으로

티스토리툴바