[개념] 메모리 누수(Memory Leak) 현상

2019. 7. 2. 17:24·개념

프로그래밍에서 메모리 누수현상(Memory Leak)은 프로그램이 필요하지 않은 메모리를 계속 점유하고 있는 현상입니다.

자바의 메모리 누수

자바에서 메모리 누수는 더이상 사용하지 않는 객체가 가비지 컬렉션(GC)에 의해서 회수되지 않고 계속 누적되는 현상입니다. Old 영역에 누적된 객체로 인해서 메이저 GC가 빈번하게 발생하게 되고, 프로그램의 응답속도가 늦어지다 결국 OOM(OutOfMemory) 오류로 프로그램이 종료됩니다.

주로 빈번한 전역변수의 선언이나, 리스트나 해쉬맵 같은 콜렉션에 저장한 객체를 해제하지 않고 계속 유지하게 되면서 주로 발생합니다. 

 

다음의 dzone 기사를 보면 Java 에서 메모리릭이 일어는 경우를 5가지 예를 들어서 코드와 함께 설명하고 있습니다.

 

https://dzone.com/articles/memory-leak-andjava-code

 

Memory Leaks and Java Code - DZone Java

When you aren't using objects, but they aren't touched by GC, a memory leak happens. Here are six ways memory leaks happen to look for and avoid.

dzone.com

자바의 메모리 누수 예제

  1. Integer, Long 같은 래퍼 클래스(Wrapper)를 이용하여, 무의미한 객체를 생성하는 경우
  2. 맵에 캐쉬 데이터를 선언하고 해제하지 않는 경우
  3. 스트림 객체를 사용하고 닫지 않는 경우
  4. 맵의 키를 사용자 객체로 정의하면서 equals(), hashcode()를 재정의 하지 않아서 같은 키로 착각하여 데이터가 계속 쌓이게 되는 경우
  5. 맵의 키를 사용자 객체로 정의하면서 equals(), hashcode()를 재정의 하였지만, 키값이 불변(Immutable) 데이터가 아니라서 데이터 비교시 계속 변하게 되는 경우
  6. 자료구조를 생성하여 사용하면서, 구현 오류로 인해 메모리를 해제하지 않는 경우

 

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

'개념' 카테고리의 다른 글

[개념] 한글 문자 인코딩  (0) 2019.09.17
[개념] NoSQL  (0) 2019.08.08
[개념] 오브젝트 스토리지(Object Storage)  (1) 2019.05.08
[개념] 프로그래밍에서 보일러플레이트(boilerplate)의 뜻  (0) 2019.02.27
[개념] HTTPS SNI 필드 차단  (0) 2019.02.15
'개념' 카테고리의 다른 글
  • [개념] 한글 문자 인코딩
  • [개념] NoSQL
  • [개념] 오브젝트 스토리지(Object Storage)
  • [개념] 프로그래밍에서 보일러플레이트(boilerplate)의 뜻
hs_seo
hs_seo
Hello World!
    반응형
  • hs_seo
    개발자로 살아남기
    hs_seo
  • 전체
    오늘
    어제
    • 전체 (1140)
      • 개발자 (21)
        • 개발에 유의할 점 (0)
        • 면접 (5)
      • IT 소식 (5)
        • 업계 (1)
      • java (51)
        • 디자인패턴 (3)
        • apache-common (1)
      • 개념 (47)
        • 자료구조 (4)
        • 함수형사고 (8)
        • 디자인패턴 (1)
      • 데이터분석 (1)
      • python (67)
        • 코드조각 (12)
        • 라이브러리 (2)
      • 빅데이터 (418)
        • zookeeper (5)
        • hadoop (78)
        • hdfs (12)
        • hive (127)
        • hbase (16)
        • spark (40)
        • scala (4)
        • trino (3)
        • oozie (41)
        • Hue (9)
        • R (5)
        • sqoop (6)
        • flume (3)
        • elasticsearch (2)
        • airflow (16)
        • kafka (3)
        • kubernetes (10)
        • openstack (3)
        • flink (2)
        • redis (2)
      • 빅데이터 강좌 (2)
      • 알고리즘 (131)
        • 알고리즘 (1)
        • 백준 (61)
        • 정올 (41)
        • 더블릿 (5)
        • 프로그래머스 (1)
      • 프로그래밍 언어 (30)
        • go (4)
        • js (9)
        • .Net (6)
        • Jsp (1)
        • ansible (3)
        • terraform (6)
      • Tools (56)
        • docker (2)
        • macbook (6)
        • maven (3)
        • sublime (1)
      • 프레임워크 (25)
        • [JS] angularjs (2)
        • [JS] node.js (19)
        • [Java] spring (2)
        • Android (2)
      • 데이타베이스 (43)
        • SQLD (5)
        • Oracle (1)
        • MySQL (8)
        • ADsP (2)
      • 리눅스 (25)
        • Bash (61)
      • GCP (5)
      • AWS (34)
        • EC2 (2)
        • EMR (14)
      • 정보보안기사 (4)
        • 네트워크 (1)
      • 개인 (80)
        • 업무실수 (0)
        • 책 (9)
        • 교육 (3)
        • 여행 (17)
        • 영화 (12)
        • 음악 (2)
        • 피규어 (4)
        • 게임 (3)
        • 생각 (7)
        • 기타 (10)
        • 좋은글 (5)
        • 좋은 사이트 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

    • 빅데이터-하둡,하이브로 시작하기
    • 빅데이터-스칼라, 스파크로 시작하기
    • Kaggle에서 파이썬으로 데이터 분석 시작하기
    • 쉘스크립트 개발 시작하기
    • 개발자가 데이터 분석 준전문가 되기
    • 데브쿠마
  • 공지사항

  • 인기 글

  • 태그

    다이나믹
    Hadoop
    yarn
    정올
    S3
    하둡
    파이썬
    hbase
    nodejs
    백준
    Linux
    mysql
    k8s
    emr
    build
    HIVE
    bash
    SPARK
    oozie
    HDFS
    Python
    알고리즘
    airflow
    AWS
    오류
    ubuntu
    하이브
    Tez
    error
    java
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
hs_seo
[개념] 메모리 누수(Memory Leak) 현상
상단으로

티스토리툴바