Java
변수와 객체와 메모리
joaa
2024. 1. 31. 22:30
변수(variable)는 무엇인가?
- '값'을 담을 수 있는 이름이 있는 '그릇'
ex) int age = 36;
변수는 값을 바꿔 담을 수 있다
애플리케이션은 어떻게 실행되는가?
- 애플리케이션: 일반 사용자가 사용할 기능을 제공하는, 컴퓨터가 실행할 수 있는 명령어들의 집합
- 메모리: 실행된 애플리케이션이 상주하는 곳
- CPU: 명령어를 실행하는 주체
runtime: 애플리케이션이 메모리 위에 올라와 있는 상태
메모리 구조
- 애플리케이션에 할당되는 메모리는 내부적으로 여러 영역으로 나뉨.
- stack 메모리: 함수나 메서드의 지역 변수(local variable)와 매개 변수(parameter)가 저장됨.
함수나 메서드가 호출될 때 마다 스택 프레임이 쌓임.
- heap 메모리: 객체가 저장됨.
Stack, Heap 메모리
호출된 함수나 메서드가 파라미터로 객체를 전달받아서 객체의 상태를 변경하면
그 함수나 메서드가 종료된 이후에도 그 객체는 변경된 상태 그대로 남아있다.
쓰레기 객체(garbage object)
접근이 불가능한 객체
자바나 파이썬은 쓰레기 객체를 알아서 처리해줌.
public class Main {
public static void main(String[] args){
Counter c = make();
}
public static Counter make() {
Counter c = new Counter(); //접근 불가
return new Counter();
}
}
public class Counter {
private int state = 0;
public void increment(){ state++; }
public int get(){ return state; }
}
파이썬에서는 숫자도 객체임