책/기술 관련

자바 객체지향의 원리와 이해 02. 자바와 절차적/구조적 프로그래밍

Mev01 2022. 2. 7. 23:34

http://www.yes24.com/Product/Goods/17350624

 

스프링 입문을 위한 자바 객체 지향의 원리와 이해 - YES24

자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량 애플리케이션 프레임워크인 스프링은 자바와 객체 지향이라는 기반 위에 굳건히 세워져 있다. 따라서 스프링을 제대로 이해하고 활용

www.yes24.com

(스프링 입문을 위한 자바 객체 지향의 원리와 이해, 2015)을 학습하고 개인 학습용으로 정리한 내용입니다.

 

 

프로그램이 메모리를 사용할 때 코드 실행 영역과 데이터 저장 영역으로 나뉜다.

데이터 저장 영역은 스태틱, 스택, 힙 영역으로 나뉜다.

 

스태틱 - 클래스를 위한 장소

스택 - 메서드를 위한 장소

힙 - 객체를 위한 장소

 

public class Memory{
	static int share;

	public static void main(String[] args) {
		int num = 6;
		System.out.println(num);
		
		func(num);
	}

	private static void func(int num) {
		int num2 = num + 4;
		System.out.println(num2);
	}
}

위와 같은 자바 코드를 실행할 때 일어나는 일

  1. JRE가 JVM 실행
  2. JVM이 전처리(java.lang패키지와 import한 패키지, 프로그램의 모든 클래스를 스태틱 영역에 배치)
    1. Memory의 클래스의 share 변수가 스태틱 영역의 Memory의 멤버로 들어감
  3. main 함수 실행되면서 스택 영역에 main 스택 프레임 생성
    1. 스택 프레임 안에 num 변수 생성
  4. func 함수 실행되면서 스택 영역에 func 스택 프레임 생성
    1. 스택 프레임 안에 num, num2 변수 생성
  5. func 함수 종료되면서 스택에서 사라짐
  6. main 스택 프레임 사라짐
  7. JRE가 JVM 종료, JRE도 운영체제 메모리에서 사라짐