ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 객체와 메모리
    컴퓨터/Java 2019. 9. 2. 16:45

    출처 : 자바프로그래밍 인문(인프런)

     

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

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

    객체를 만들기 위해 class를 만든다 -> new라는 키워드로 생성한다 -> 

     

    - 레퍼런스(가리킨다)란?

    메모리에 생성된 객체의 메모리 주소를 담고 있는 것

    생성한 객체의 주소를 변수에 저장하는 것.

    클래스가 같아도 다른 객체다.

    package lec11Pjt001;
    
    public class MainClass {
    	public static void main(String[] args) {
    		ChildClass child1 = new ChildClass();
    		ChildClass child2 = new ChildClass();
    		ChildClass child3 = new ChildClass();
    		
    		System.out.println("child1 ---> " + child1);
    		System.out.println("child2 ---> " + child2);
    		System.out.println("child3 ---> " + child3);
    		
    	}
    }
    
    //주소가 나온다
    //child1 ---> lec11Pjt001.ChildClass@15db9742
    //child2 ---> lec11Pjt001.ChildClass@6d06d69c
    //child3 ---> lec11Pjt001.ChildClass@7852e922

    쓰지 않으면 관계를 끊어버린다 -> 어떠한 레퍼런스도 존재하지 않게 된다. 임자없는 객체가 된다.

    garbage collector가 회수한다. 메모리에서 지운다.

     

    - 자료형이 같아도 다른 객체

    child1 != child2, child2 != child3, child1 != child3(위에서)

     

    - null과 NullPointerException

    레퍼런스에 null이 저장되면 객체의 연결이 끊기며, 더 이상 객체를 이용할 수 없다.
    이 객체의 메서드를 호출하면 NullPointerException이 발생한다. -> 더 이상 가리키는 곳이 없다!

    댓글

Designed by Tistory.