🌱 오늘의 주제 : 자바와 절차적 / 구조적 프로그래밍 (2)
🌱 지역 변수와 메모리 : 스택 프레임에 갇혔어요!
- 변수는 메모리에 있다.
- 변수는 스태틱 여역, 스택 영역, 힙 영역에 있다.
- 변수의 이름은 지역 변수, 클래스 멤버 변수, 객체 멤버 변수이다.
- 내부 블록에서 외부 불록의 변수에 접근하는 것은 가능. 그러나, 외부에서 내부에 접근하는 것은 불가능.
지역 변수 : 스택 영역에서 일생을 보낸다.
클래스 멤버 변수 : 스태틱 영역에서 일생을 보낸다.
객체 멤버 변수 : 힙에서 일생을 보낸다.
🌱 메서드 호출과 메모리 : 메서드 스택 프레임2
- 메서드 호출이 일어나면 메서드의 스택 프레임이 T 메모리 스택 영역에 새로 생성된다.
- 자바에서는 포인터를 사용할 수 없으므로 메서드 스팩 프레임 사이에 변수를 참조하는 것은 불가능.
- 메서드를 호출하면 인자로 전달 되는 것은 변수 자체가 아니다. 변수가 저장한 값만 복제해서 전달한다. - Call By Value
- 메서드 사이에 값을 전달하거나 반환하는 방법 : 메서드의 인자와 반환값으로만 가능.
🌱 전역 변수와 메모리 : 전역 변수 쓰지 말라니까요!
- 메서드 사이에 값을 공유하는 방법은 전역 변수를 사용.
- 전역 변수는 코드 어느 곳에서나 접근할 수 있다. 여러 메서드들이 공유해서 사용한다고 해서 공유 변수라고도 한다.
- 전역 변수는 쓰지 않는 것이 좋다. -> 수만 줄이 넘는 코드에서 다른 메서드에 의해 전역 변수에 다른 값이 저장된다면, 코드를 추적해 들어가야만 값이 변한 이유를 파악 할 수 있어, 매우 힘들고 어려운 작업이기 때문.
🌱 멀티 스레드 / 멀테 프로세스의 이해
스태틱 영역 | ||
스택 영역 - 메서드들의 놀이터 | 힙 영역 | |
스레드 | 스레드 |
- 멀티 스레드 (Multi Thread) : 스택 영역을 스레드 개수만큼 분활해서 쓰는 것
- 하나의 스레드에서 다른 스레드의 스택 영역에는 접근할 수 없지만, 스태틱 영역과 힙 영역은 공유해서 사용하는 구조.
- 메모리 적게 사용 할 수 있는 구죠.
스태틱 영역 | |
스택 영역 | 힙 영역 |
스태틱 영역 | |
스택 영역 | 힙 영역 |
스태틱 영역 | |
스택 영역 | 힙 영역 |
- 멀티 프로세스(Multi Process) : 다수의 데이터 저장 영역, 즉 다수의 T 메모리를 갖는 구조.
- 하나의 프로세스가 다른 프로세스의 T 메모리 영역을 절대 침범할 수 없는 메모리 안전한 구조.
- 메모리 사용량은 크다.
🌱 정리 - 객체 지향은 절차적/구조적 프로그래밍의 어깨를 딛고
- 객체 지향 프로그래밍은 절차적/구조적 프로그래밍의 유산을 간직하고 있다. (연산자, 제어문, 메모리 관리 체계)
- 스태틱: 클래스들의 놀이터
- 스택: 메서드들의 놀이터
- 힙: 객체의 놀이터
🌱 느낀점
객치 지향 프로그래밍이 절차적/구조적 프로그래밍의 유산을 간지고하고 있다는 부분을 처음 깨달았다. 그리고 c++, c언어를 부정한 것이 아니라 계승한 것이라는 부분도 인상 깊었다. 단순히 객체 지향 프로그래밍만 아는게 중요한 게 아니라 더 깊게 이해하기 위해서는 절차적/구조적 프로그래밍 기법도 잘 알고 있어야 한다는 부분이 이번 장에서 가장 중요한 핵심이지 않을까 하는 생각이 들었다.
또한 T 메모리 구조에 대해서 다시 한번 개념을 다듬는 시간이었던 것 같다. T메모리 구조를 이해하면 객체 지향을 이해하는 큰 도움이 된다 하니, 앞으로 배울 장에서 이번 장을 되새기며 배우는 시간이 될 것 같다.
'Spring > Book - 스프링 입문을 위한 자바 객체 지향의 원리와 이해' 카테고리의 다른 글
03. 다형성: 사용편의성 (0) | 2023.03.16 |
---|---|
03. 자바와 객체 지향(2) (0) | 2023.01.27 |
03. 자바와 객체 지향 (1) (0) | 2023.01.17 |
02. 자바와 절차적 / 구조적 프로그래밍 (1) (0) | 2023.01.05 |
01. 사람을 사랑한 기술 (0) | 2023.01.03 |