언어/JAVA
[JAVA] 메모리영역, static, 싱글톤
steadyMan
2021. 2. 25. 00:26
스프링 빈 생명주기에 대해 학습하던중에 스프링 컨테이너에서 관리되는 빈은 싱글톤을 기본으로 생명주기를 관리되는데
그렇다면 객체는 static일텐데 어째서 객체안에 있는 변수들은 고정된 값이 아니라 소멸되는걸까 라는 의문이 들어 학습한 결과입니다.(메모리 영역에 대한 이해부족)
public class TestBean {
private String a;
private String b;
public String getA() {
return a;
}
public void setA(String a) {
this.a = a;
}
public String getB() {
return b;
}
public void setB(String b) {
this.b = b;
}
싱글톤으로 스프링컨테이너로 올라간 위의 VO의 전역변수가 어째서 static으로 올라갔음에도 초기화가 되는걸까
잘못알고있던 사실은 static이 적용된 자원은 메모리의 고정영역에 생성되기 때문에,
클래스가 자체의 객체나, 그 안의 포함된 맴버변수, 메서드와는 메모리 상에서 구별된다고 한다.
즉 TestBean을 static으로 정의하면 실제로는 TestBean클래스 자체에서 독립된 객체가 되는것이다.
클래스안에 있는 전역변수, 메소드가 모두 고정영역으로 올라간다고 잘못알고있던것!