본문 바로가기
Java 강의

객체지향 프로그래밍 / JVM 메모리 스택 , 힙 , 클래스 영역

by 자유코딩 2017. 9. 14.

객체란?

 

존재하는 모든 사물은 객체가 될 수 있습니다.

 

사람 객체 , 고양이 객체 , 강아지 객체 , 컴퓨터 객체 ...

 

객체 지향 프로그래밍의 사전적 정의는 이렇습니다.

 

객체 지향 프로그래밍(영어: Object-Oriented Programming, OOP)은 컴퓨터 프로그래밍패러다임의 하나이다. 객체 지향 프로그래밍은 컴퓨터 프로그램명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다.

 

출처 : https://ko.wikipedia.org/wiki/%EA%B0%9D%EC%B2%B4_%EC%A7%80%ED%96%A5_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D

 

프로그래머가 전지적인 시점에서 실세계를 코드 상에 모델링 하는 것이 아닙니다.

각각의 객체들이 가져야하는 속성과 메소드를 파악하고 , 객체들 사이의 관계에 초점을 두고 코드를 작성하는것을 객체지향 프로그래밍이라고 합니다.

 

 

JVM 메모리 스택 , 힙 , 클래스 영역

 

 

그림은 자바에서 JVM이 메모리를 관리하는 방식을 나타낸 것입니다.

 

Person p1 = new Person();

Person p2 = new Person();

Person p3 = new Person();

 

다음의 코드를 사용해서 p1 , p2 , p3 변수에 Person 객체의 주소를 저장시킵니다.

P1, P2, P3는 모두 메모리의 Stack영역에 저장됩니다.

 

코드를 작성할때

p1.name

p2.name

p3.name 처럼 사람 1,2,3의 이름을 각각 코드 안에서 사용하게 됩니다.

이때 p1, p2, p3의 주소는 int a, int b, int c 의 주소처럼 다릅니다.

 

그래서 서로 다른 주소가 저장된 p1 , p2 , p3는 Person 객체를 참조해서

p1.name = "이름 1"

p2.name = "이름 2"

p3.name = "이름 3"

마치 개별적인 공간을 갖는 것처럼 이렇게 사용할 수 있게 해줍니다.

 

Arraylist가 저장되고 참조되는 방식

 

 

 

 

Vector가 저장되고 참조되는 방식

 

 

댓글