1. 객체의 구조

  • 객체는 클래스에 의해 실체화 된것이다.   (참고주소: http://naraeh.tistory.com/12)
  • 객체 (원시)변수는 존재하지 않는다!! => 객체 레퍼런스변수(레퍼런스)만 존재할뿐                                                                                     ex) Dog myDog = new Dog();  //myDog는 (원시)변수가 아니라 레퍼런스변수

 

2. 객체의 선언 및 생성

 Dog myDog = new Dog();

 

  • 객체의 선언: Dog myDog => JVM에 레퍼런스 변수용 공간을 할당해 달라는 요청 후 그 변수명을 myDog로 지정
  • 객체의 생성: new Dog()  =>  Dog객체를 위한 공간마련

 

3. 객체의 메모리관리

  • garbage collection: 주소


1. JVM에서의 공간

1.1 JVM 구조



1.2 코드

public class Test {

   public static void main(String[] args){

       int[] p1 = new int[5];

       int[] p2 = new int[3];

       int[] p3 = p1;

 

       p3[2] = 100;

 

       System.out.println(p1[2]);

 

       p2 = p1;

   }

}

 

 

1.3 공간모습

 *stack: 메소드를 호출할 때마다 메모리가 쌓인다, 처음에 쌓였던 메모리가 가장 늦게 반환된다 => main()이 가장 늦게 반환된다

            main메모리 생성 -> p3 변수 메모리 생성 -> p3 변수 메모리 반환 -> main 메모리 반환

            (p1, p2는 new로 생성했으므로 stack이 아닌 heap영역 )

 


2. garbage colection(가비지 컬렉션)이란?

  • garbage : 참조하는 변수가 없는 메모리
  • garbage collectior: garbage memory를 해제하는 객체(heap 영역을 관리), 자동으로 실행된다.

 

2.1 garbege는 언제 청소될까?

  • idle time(운영체제가 한가한 시간에)
  • 메모리가 부족할 때

    * garbage가 생겼다고 garbage collection가 즉시 작동하는 것은 아니며, 무조건 작동하는 것은 아니다.

      (프로그램이 잠깐 실행되는 경우에는 garbage collection이 작동하지 않는다.)

 

2.2 garbage를 최소하 하기 위해서는?

  • 디자인 패턴에 따라 코드를 짜서 garbage생성을 최소화 하라!



3. 첨부파일

JAVA_garbageCollection.pptx


'개발 > Java' 카테고리의 다른 글

[JAVA] array(배열)  (0) 2017.01.01
[JAVA] 객체  (0) 2016.12.31
[JAVA] "인스턴스변수VS 메소드"와 "클래스 VS 객체"  (0) 2016.12.31
[JAVA] 기초03  (0) 2016.12.31
[JAVA] 기초 - 주석  (0) 2016.12.31

1. 변수와 메소드

  • 인스턴스변수: 인스턴스의 변수, 인스턴스(객체)에 대해 아는 것 (상태, 명사)
  • 메소드: 객체가 하는 것 (행동, 동사)
  • 객체 = 실체화된 인스턴스 변수 + 실체화된 메소드


1.1 예제

Dog라는 클래스를 만들경우,

  • 인스턴스변수: size, name, color 등...
  • 메소드: bark(), eat() 등...

 


2. 클래스와 객체

클래스는 객체가 아니다!!!!!

  • 클래스: 객체를 만들기 위한 용도
  • 객체: 클래스에 의해 실체화 된 것

 

2.1 예제

 클래스

객체 

class Movie{

   String title;

   String genre;

   int rating;

 

   void palyIt(){

       System.out.println("영화를 상영합니다.");

   }

}

Movie one = new Movie();

one. title = "주식과 함께 사라지다";

one.genre = "비극";

on.rating = -1;

 

Movie two =  new Movid();

two.title = "바이트 클럽"

two.genre = "기분이 좋아지는 비극"

two.rating = 127;

 

 아직 실질 적으로 존재하지 않는 상태

 클래스를 생성하여 값을 넣음으로써 실제로 존재하는 상태

객체란 Movie라는 클래스에 의해 생성된 one과 two를 의미한다.

 

'개발 > Java' 카테고리의 다른 글

[JAVA] 객체  (0) 2016.12.31
[JAVA] JVM이 메모리를 관리하는 방법 - garbage collection(가비지 컬렉션)  (0) 2016.12.31
[JAVA] 기초03  (0) 2016.12.31
[JAVA] 기초 - 주석  (0) 2016.12.31
[JAVA] 기초 - 자료형(변수)  (0) 2016.12.31

+ Recent posts