Java 프로그래밍 06 : static
·
프로그래밍 언어/자바(Java)
static이라는 키워드는 유명하다. 나는 이 키워드를 주로 알고리즘을 풀 때 사용했는데, 해당 프로그램에서 전역 변수로 선언하여, 재귀 함수를 비롯한 main을 제외한 함수에서 사용하기 위해 static 변수를 썼었다. 사실 나에게 있어 static 변수는 '메모리에 적재되어 프로그램 종료까지 사라지지 않는 변수' 정도로만 인식되었다. 그런데, static 챕터 강의를 듣다보니 클래스 내에서 static으로 선언된 변수는 서로 다른 객체에서도 공유한다는 것을 알게 되었다. 클래스로 만들어진 인스턴스, 그러니까 객체라는 건 메모리 상에 다른 주소에 저장이 될 텐데 어떻게 static 변수가 공유가 된다는 걸까? 이번 포스트에서는 그걸 알아보려고 한다. 그 전에, 우선 static 키워드에 대해 다시 한 ..
Spring 01 : Spring의 객체 관리
·
백엔드(BE)/스프링 부트(Spring Boot)
저번에 자바의 Garbage Collection(GC)을 정리했었다. (아래 포스트 참고)  Java 프로그래밍 05 : Garbage Collection(GC)나는 C++을 사용할 때는 소멸자(Destructor)를 정의하거나 상속 받은 것을 재정의(override)해서 쓴 적이 있다. 그러나 Java로 개발하면서 생성자는 잘 써도 소멸자는 사용해 본 기억이 없었다.  처음buen-camino-developer.tistory.com   자바는 GC가 사용이 끝난 객체를 알아서 회수한다. 그런데 스프링은 Bean이라는 이름으로 프레임워크에서 사용되는 Java 객체의 생성 및 소멸을 직접 관리한다. 그러다보니 한 가지 궁금증이 생겼다. 스프링은 객체를 어떻게 관리하는 걸까? 분명 스프링을 배울 때 무언가를..
Java 프로그래밍 05 : Garbage Collection(GC)
·
프로그래밍 언어/자바(Java)
나는 C++을 사용할 때는 소멸자(Destructor)를 정의하거나 상속 받은 것을 재정의(override)해서 쓴 적이 있다. 그러나 Java로 개발하면서 생성자는 잘 써도 소멸자는 사용해 본 기억이 없었다.  처음 자바를 배웠을 때는 별 생각이 없었지만, 후에 알고 보니 자바는 가비지 컬렉션(Garbage Collectotion, GC)가 자동으로 쓰지 않는 객체를 회수하기 때문이었다. 문득, 한 가지 궁금한 점이 생겼다. C++의 경우 객체가 delete되거나, 스코프를 벗어나면 소멸자가 호출되고, 그 다음에 객체가 소멸된다. 그러나 자바는 소멸자가 존재하지 않는다. 그렇다면 Garbage Collection은 객체의 사용 종료 시점을 어떻게 판별하는 걸까?  이를 알기 위해서는 Garbage Co..