JAVA

[JAVA] 클래스, 객체, 인스턴스

준몽쓰 2024. 12. 16. 16:20

 

클래스 (Class)

  • 객체를 정의 한 틀
  • 객체를 생성하는데 사용

객체 (Object)

  • 물리적으로 존재하거나 추상적
  • 클래스에 선언된 모양 그대로 생성된 실체
  • 클래스의 타입으로 선언되었을 때 객체라고 부름

인스턴스 (instance)

  • 설계도를 바탕으로 소프트웨어 세계에 구현된 구체적인 실체
  • 객체를 실체화 하면 인스턴스라 함
  • 실체화 된 인스턴스는 힙 메모리에 할당 됨.

 

 

GC란?

  • JVM의 heap 영역에 할당한 메모리 영역 중 사용하지 않는 영역을 탐지하여 제거
  • 자바에서는 개발자가 메모리를 직접 해제할 수 없기 때문에 GC가 필요

 

Heap이란?

  • JVM이 객체를 저장하는 공간
  • 프로그램 실행 중 동적으로 생성된 객체가 저장되는 곳

  • new Dog()를 실행하면 Dog 클래스의 객체가 힙 영역에 생성
  • 인슽언스 변수를 위한 메모리 할당 (age,gender,breed)
  • 변수 dog는 스택 영역에 저장되며 힙 영역에 생성된 Dog 객체의 참조 값을 가짐

dog.age = 2; 

dog.gender = "M";

dog.breed = "poodle";

 

힙 영역에 있는 Dog 객체의 age 필드에 값 2

힙 영역에 있는 Dog 객체의 gender 필드에 값 "M"

문자열 "poodle"은 힙 영역의 String 풀에 저장