큰 객체(Humongous Object)는 Java 메모리에서 어떻게 할당되나요? Humongous Object에 대해 알고 계신다면 설명해 주세요.

박상준·2024년 11월 17일
0

Humongous Object?

  • 자바 프로그램에서 어떤 데이터를 메모리에 저장하는 경우 크기에 따라 다르게 처리됨
  • 엄청 큰 데이터는 따로 관리

왜 따로 분류하는지

자바에서는 메모리는 작은 상자 -> 리전 으로 나뉘어서 관리된다

상자의 크기가 1MB 이라면

  • 해당 상자의 절반인 (512KB) 보다 큰 데이터의 경우 큰 객체 로 분류된다.

큰 객체 저장법

  • 큰 객체는 너무 커서 여러 상자를 연결해서 저장한다

큰 객체 다룰때 문제

  • 메모리 낭비
  • GC가 힘듬..
    • 큰 객체는 크기가 커서 이동이나 정리시 시간이 오래 걸림

문제 해결법

  1. 메모리 조정
    1. -XX:G1HeapRegionSize 를 사용해 상자 크기를 조정가능하다.
  2. 큰 객체 나누기
    1. 큰 배열보다 작은 배열 여러 개로 나누기

구조도

+--------------------------- Heap Memory ---------------------------+
| Region 1 | Region 2 | Region 3 | Region 4 | Region 5 | Region 6 | ...
|-------------------------------------------------------------------|
| Unused   | Normal    | Normal    | Unused   | Humongous (Part 1) |
|          | Object A  | Object B  |          |                  |
|-------------------------------------------------------------------|
| Humongous (Part 2) | Humongous (Part 3) | Unused                |
|                    |                    |                      |
+-------------------------------------------------------------------+
profile
이전 블로그 : https://oth3410.tistory.com/

0개의 댓글