JAVA

[Java] 프로세스 메모리맵, 메소드, 스코프

SangRok Jung 2022. 5. 23. 10:24
반응형

 

프로세스 메모리맵


* 프로그램을 실행하면 프로세스가 이루어지고 프로세스는 메모리에 저장된다.

 

Stack Area : FIFO(First in Last out)방식 이며 Compile time binding이 이루어진다.

Heap Area : 이름을 못 붙이는 문제가 있지만 할당이 된다면 시작 주소(시작 정보)를 스택영역에 저장하여 끌어오며 그것을 레퍼런스 타입이라 한다. 스택 영역에서 저장한 시작 주소를 Reference Value라고 한다.

Global Area : 리터럴 및 명령어가 저장된다.

 

 

 

 

Method


Class 안에 있는 Funtion.

대규모 프로그램을 짜기 위한 기본적인 도구다.

- 모든 funtion은 class안에 포함 되어 있어야 한다. (java)

- 프로세스의 시작은 main에서 시작되기로 약속 되어 있다.

 

● Instruction set : 명령문의 집합

public static void main(String[] args)

옵션 리턴형 매소드이름 파라미터

풀이

→ 공개되고 클래스 메모리에 올라가있지 않아도 없고(리턴형) 스트링~ 이라는 메인 메소드.

 

*option : c에서는 3개, JAVA에는 5개의 공개 비공개 등의 기능이 있으며 외부에서 호출 가능 여부, 접근 제어자의 여부를 정한다. 반드시 붙여주어야 하며 붙여주지 않으면 설정된 디폴드 값이 입력된다.

*static : 이 메소드를 " 클래스를 만들지 않아도" 접근이 가능하게 한다. 클래스가 메모리에 올라가있지 않지만 메인 함수를 메모리(글로벌 영역)에 올리게 한다.

*void : "없다.", "모른다.", "상관하지 않겠다." 라는 뜻이다. →→ 리턴형은 없다.

public static int add(int a, int b)

풀이

두개의 값을 입력받아 합을 구하여 리턴하는 add함수를 작성하시오.

 

 

 

 

 

 

 

return


함수를 종료하고 스택에서 팝 하고 메인스택 임시변수 영역에 저장한다.

· 메소드가 중지된다.

· 스택에서 해당 메소드의 변수를 팝 시킨다.

· 리턴값을 호출한 함수에게 전달한다.

 

 

 

 

 

 

 

 

Scope


· 변수나 메소드가 호출되거나 I/O가 가능한 영역

어느 범위 내에서 읽고 쓰고 할 수 있다.

▶ 스코프를 구분하는 경우

· 메소드 (메인 함수) : 메모리맵의 구조상 메소드의 스택과 다른 함수 사이에 메인함수와 다른 함수를 구분할 수 있는 프로세스가 들어가있다. 역할 : 넘어오지마 이새기야

 

· 키워드 : (ex) for문)와 중괄호 안에 있는 리터럴은 다른 스코프로 구분한다.

하단은 좋지 않은 코드의 예다.

· 중괄호 : {} 안에 있는 함수는 별개로 취급을 했었다. (JAVA8 버전 이후 버전 부터

반응형