본문 바로가기
study/JAVA

자바 JAVA 클래스가 메모리에 저장되는 방식

by stilinski 2022. 4. 1.
728x90

클래스

 

구조체: 서로 관련있는 데이터끼리 묶은 것, 데이터 타입이 달라도 상관없음.

구조체를 확장한 게 클래스

 

클래스에는 메소드도 포함

 

 

메모리에 값을 저장하는 방식이 발전(?)한 순서

 

 

변수

: 하나의 값을 저장하기 위한 기억공간

ex) int 4byte

int num =3;

int data = 4;

 

 

 

배열

: 같은 데이터타입의 서로 관련있는 데이터들을 묶어놓은 기능.

나란히 저장이 됨.

ex) int arr[]={1,2,3};

 

 

구조체

: 같은 데이터타입이 아니더라도 서로 관련있는 데이터들을 묶어놓은 기능

C에서 사용. (절차적프로그래밍)

ex)

<구조체정의>

typeof struct person (< = 사용자가 정의한 데이터 타입){

char[5] name;

int age;

boolean gender;

}

↑↑

{}안에 정의된 것들을 멤버변수라고 부름

 

<구조체 선언>

(데이터 생성 및 데이터 메모리에 저장)

person ps;

ps.name = {’k’,’i’,’m’};

ps.age= 30;

ps.gender=true;

 

(새로운 값 할당)

person pn;

pn.name = {’l’,’i’,’m’};

pn.age= 20;

pn.gender=true;

 

 

클래스

: 구조체(멤버변수) + 함수(메소드)

객체지향 언어에서는 구조체대신 클래스를 사용

  • 객체란?

실세계에 존재하는 모든 사물이나 개념들이다.

자동차의 각 부품이 객체

 

 

 

 

예를들면

객체지향 프로그래밍 과정

 

1.객체파악

ex) 홍길동(객체), 이영희(객체)

 

 

2. 객체 모델링

: 객체가 가지고있는 특징과 기능들을 구분

: 객체를 프로그램으로 구현하기 위한 분석작업이다.

ex)

홍길동

객체의 특징: 이름:홍길동, 나이:30, 성별: 남

객체의 기능: 운전, 달리기,

이영희

객체의 특징: 이름:이영희, 나이:28, 성별: 여

객체의 기능: 운전, 달리기

 

3. 클래스 정의하기

: 객체를 표현할 수 있는 최소단위가 클래스

: 객체들의 공통점을 찾아내어 그 공통점을 표현하는 것, 객체의 설계도

ex)

객체의 특징 ⇒ 멤버변수

객체의 기능⇒ 메소드

이것들이 어떻게 메모리에 저장되는지 밑에서 살펴보자

 

 

 

 

 

클래스의 메모리 차지 구조

JVM 메모리 구조

  1. method area : 메소드에 대한 바이트코드, 클래스 변수, 클래스에 대한 정보
  2. stack area: 지역변수 매개변수
  3. heap area: 클래스 객체, 배열

 

 

  • 객체참조변수 선언 & 객체 생성

처음에 new로 생성하고 데이터 할당 안했을때 멤버변수들에는 기본값이 설정됨

 

위의경우

name : null

age: 0

gender: false

 

 

 

 

Person ps하면 스택메모리에 자리가 생김

new 선언으로 힙메모리에 저것들이 기본값으로 생성됨

(new를 해야지 heap메모리에 저장됨)

ps 는 메서드 안에서 정의되는 지역변수이기때문에 stack에 저장됨

 

 

 

 

 

 

 

 

  • 데이터 할당

힙메모리에 저장되고 힙메모리에 저장된 자리의 주소가 스택메모리의 ps변수에 저장됨.

 

 

 

  • 데이터 추가
    pn을 생성하면 다른 객체가 또 생김메서드 영역에 메서드들은 저거 잘못그린 거 같음. 원래는 한개만 있어야 맞는 거 같음. 책에서는 메서드들은 메서드영역에 한번 저장되어서 객체들끼리 공유한다고 나옴.

 

 

 

 

728x90

댓글