[국비 학원 기록/자바]객체지향(OOP) 02.스택, 힙, 힙 메모리
my code archive
article thumbnail
반응형
JVM의 메모리 구조

1. 호출스택(Call Stack) -- LIFO (Last In First Out), 후입선출, 가장 마지막에 들어온 자료가 가장 먼저 삭제된다.

-메서드의 저장 공간

-메서드가 호출되면 메서드 수행에 필요한 메모리 공간을 할당받고

-메서드가 종료되면 사용하던 메모리를 반환함.

->프로그램의 시작점 main()이 시작하면서 필요한 메모리 공간을 할당함.

->호출 스택에서 맨 위에 있는 메서드가 현재 실행 중이며

  아래에 있는 메서드가 바로 위에 메서드를 호출한 메서드이며 대기 상태로 있음.

 

2. 힙(Heap)

-인스턴스가 생기는 공간

-new 연산자에 의해 생성되는 객체는 모두 여기에 생성됨.

 

호출 스택 (Call Stack) 확인 예제

같은 클래스에 있는 메서드를 .으로 호출 가능

실행 순서
main() 이 가장 먼저 실행되고 main()에서 호출한 first가 실행되는 순서.
이때 main()은 대기 상태로 있다가 first()가 종료 후 마지막에 종료된다.

second()를 추가해도 마찬가지인데,
같은 클래스에 있는 메서드를 호출할 때에는 ctrl+space만으로 간편하게 호출할 수 있다.

third()를 추가해도 마찬가지 순서로 실행된다.

 

인스턴스 생성과 힙 메모리(heap memory)

1. 인스턴스(instance)

-클래스는 객체의 속성을 정의하고 기능을 구현하여 만들어 놓은 코드 상태.

-실제 클래스 기반으로 생성된 객체(인스턴스)는 각각 다른 멤버 변수값을 가지게 됨.-new 키워드를 사용하여 인스턴스 생성

 

2. 힙 메모리(heap memorty)-생성된 인스턴스는 동적 메모리 할당됨.-C, C++언어에서는 사용한 동적 메모리를 프로그래머가 해제 시켜야 하지만 (free(), delete())-자바에서는 Garbage Collector(GC)가 주기적으로 사용하지 않는 메모리를 수거함.

반응형
profile

my code archive

@얼레벌레 개발자👩‍💻

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

반응형