[자바 프로그래밍 입문] 객체와 메모리

2021. 11. 9. 14:49·Language/Java

메모리에서 객체 생성(동적 생성)

객체는 메모리에서 동적으로 생성되며, 객체가 더이상 필요 없게 되면 Gabage Collector에 의해서 제거된다.

개발자는 객체를 만들기 위해서 Class를 만든다. new 연산자를 사용해 객체를 만들면 객체들은 메모리에 생성된다.

ChildClass child = new ChildClass();

여기서 child를 레퍼런스라고 한다. 이때 chlid는 메모리에 생성된 객체가 담긴 주소를 갖고있다.

(레퍼런스는 가리키다 라는 뜻!)

 

레퍼런스가 객체를 가리키고 있다가 더이상 객체가 필요없게 되면 더이상 그 객체를 가리키지 않는다.(관계를 끊어버린다.)

그러면 그 객체에는 어떠한 레퍼런스도 존재하지 않게된다. ( 이미지에서 노란색 obj)

허공에 떠있는 임자 없는 객체는 Gabage Collector가 판단해서 회수해 객체를 메모리에서 지워버린다.

 

개발자는 Class로 부터 객체를 생성해서 사용하면 된다. 필요 없어진 객체는 개발자가 신경쓰지 않아도 GC가 알아서 처리해준다!

 

레퍼런스

생성한 객체의 주소를 변수에 저장하는 것을 레퍼런스라고 한다.

같은 클래스 ObjectClass로 객체 3개를 생성하면 그 객체들은 모두 동일한 공간에 생성된 것이 아니라 별도로 생성된다.

즉, 3개의 레퍼런스(obj1, obj2, obj3)가 가리키는 메모리의 주소가 다르다는 뜻이다.

 

null과 NullPointException

레퍼런스에 null이 저장되면 객체의 연결이 끊기며, 더 이상 객체를 사용할 수 없다.

obj1 에 null 값을 넣게되면 레퍼런스와 객체의 연결이 끊기며 sysout으로 출력했을 때 null이 나온다.

관계가 끊겼음에도 .getInfo()를 통해 그 메소드를 호출하게 되면 가리키는 곳이 없기 때문에 NullPointException이 발생한다.

 

저작자표시

'Language > Java' 카테고리의 다른 글

[JAVA] 인터페이스  (0) 2022.01.16
[JAVA] 생성자  (0) 2021.11.09
[자바 프로그래밍 입문] 02 Java 프로그램의 실행 구조  (0) 2021.11.04
[자바 프로그래밍 입문] 01 Hello Java World!  (0) 2021.11.03
[JAVA] Chapter 02 - 1 변수  (0) 2019.11.12
'Language/Java' 카테고리의 다른 글
  • [JAVA] 인터페이스
  • [JAVA] 생성자
  • [자바 프로그래밍 입문] 02 Java 프로그램의 실행 구조
  • [자바 프로그래밍 입문] 01 Hello Java World!
soyeon26
soyeon26
  • soyeon26
    개발 일지
    soyeon26
  • 전체
    오늘
    어제
    • 분류 전체보기 (107)
      • Web (22)
        • Web (1)
        • HTTP (0)
      • Language (29)
        • Java Script (3)
        • Type Srcipt (1)
        • Java (25)
      • Front (19)
        • HTML+CSS (4)
        • React (15)
      • Back (41)
        • Spring(Springboot) (9)
        • JSP (21)
        • Database (5)
        • NestJS (6)
      • Devops (6)
        • Docker (1)
        • Git & SVN (5)
      • App (7)
        • Android (7)
      • IT 정보 (3)
  • 블로그 메뉴

    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    중복제거
    javascript
    인프런
    React Next.js
    강의후기
    과학기술인번호 조회
    Next.js 필요성
    springboot
    csrvsssr
    SSR
    자바스크립트set
    과학기술인등록번호 조회
    강의 후기
    Java
    Next.js
    데이터베이스 강의
    프론트엔드
    java의 정석
    김영한
    sql강의
    csr과ssr의 차이
    과학기술인 번호 발급
    과학기술인 등록
    SQL강의 추천
    React
    스프링부트
    백엔드
    Spring
    과학기술인 등록번호 발급
    서블릿
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
soyeon26
[자바 프로그래밍 입문] 객체와 메모리
상단으로

티스토리툴바