본문 바로가기

JAVA

[JAVA] 가비지 컬렉션(GC)와 NPE

🗑️ 가비지 컬렉션 (Garbage Collection, GC)

  • *가비지 컬렉션(GC)**은 자바의 중요한 메모리 관리 메커니즘이다. 개발자가 명시적으로 메모리를 할당 해제할 필요 없이, JVM이 **더 이상 참조되지 않는 객체(쓰레기 객체)를 자동으로 찾아내어 메모리에서 제거(해제)**한다.
  • 자동 메모리 관리: C/C++와 같은 언어에서는 개발자가 직접 malloc/free를 사용하여 메모리를 할당하고 해제해야 하지만, 자바는 GC가 이 작업을 대신하여 메모리 누수를 줄이고 개발 편의성을 높여준다.
  • GC 동작 시점: JVM이 필요하다고 판단할 때 (예: 메모리가 부족해질 때) 또는 특정 조건이 충족될 때 주기적으로 작동한다. 개발자가 GC를 명시적으로 호출할 수는 있지만, JVM에 의해 무시될 수 있으므로 권장되지 않는다.

💥 NullPointerException (NPE)

  • *NullPointerException (NPE)**은 자바 개발자가 가장 흔하게 접하는 런타임 예외 중 하나다. 참조형 변수가 null 값을 가지고 있는 상태에서 해당 변수를 통해 객체의 멤버(필드 또는 메서드)에 접근하려고 할 때 발생한다.
String text = null;
System.out.println(text.length()); // NullPointerException 발생!
// text가 null이므로, 어떤 String 객체도 가리키지 않는데 length() 메서드를 호출하려고 함

🛡️ NPE를 방지하는 방법

  • null 체크: 객체를 사용하기 전에 해당 참조 변수가 null인지 미리 확인한다.
  • if (text != null) { System.out.println(text.length()); } else { System.out.println("text는 null이다."); }
  • 옵셔널(Optional) 사용: Java 8부터 도입된 Optional 클래스를 사용하여 null이 될 수 있는 값을 안전하게 다룰 수 있다.
  • 방어적 코딩: 메서드 매개변수나 반환값이 null이 될 수 있는지 항상 고려하고, null이 전달되지 않도록 유효성 검사를 수행한다.

'JAVA' 카테고리의 다른 글

[JAVA] import 문에 대하여 알아보자.  (0) 2025.09.13
[JAVA] 패키지란?  (0) 2025.09.13
[JAVA] 변수와 초기화  (0) 2025.09.13
[JAVA] 배열과 기본형, 참조형이란?  (0) 2025.09.13
[JAVA] 클래스, 객체, 인스턴스란?  (0) 2025.09.13