본문 바로가기

전체 글22

[Spring] 스프링(Spring) 핵심 기술 이야기 1부 - IoC 이 글은 백기선 님의 스프링 프레임워크의 핵심 기술 강의를 듣고 복습 차원에서 적은 글입니다. Inversion of Control은 의존 관계 주입(Dependency Injection)이라고도 하며, 어떤 객체가 사용하는 의존 객체를 직접 만들어 사용하는 게 아니라, 주입받아 사용하는 방법을 말한다. 스프링 IoC 컨테이너 스프링 IoC 컨테이너의 핵심은 ApplicationContext, BeanFactory이다. 실제로 스프링 컨테이너 또는 IoC 컨테이너라고 말하는 것은 바로 ApplicationContext 인터페이스를 구현한 클래스의 오브젝트다. ApplicationContext는 BeanFactory를 상속받고 있다. 그렇다면 IoC컨테이너의 핵심 역할은 무엇일까? 핵심 역할은 빈 설정 소.. 2020. 9. 10.
[Java] 가비지 컬렉션(GC, Garbage Collection) 이란? GC란 동적으로 할당된 메모리에서 사용하지 않는 객체를 수집하는 역할을 한다. 메모리가 가득 차게 되면 OutofMOutOfMemmory Exception이 발생한다. 앞서 JVM 메모리 구조에 대해서 공부했다면 동적 할당되는 메모리 부분은 Heap메모리 영역이라는 것을 알고 있을 것이다. 그렇다면 Heap 메모리 구조를 살펴보자! Eden 영역부터 Sevior 영역까지를 Young 영역이라고 한다. 즉, 크게 Young, Old, Perm 3가지 영역으로 나누어진다. [참고] JDK8부터는 Perm영역이 MetaSpace영역으로 대체되었다. MetaSpace영역은 Native 메모리를 사용하여 동적으로 공간을 확보하는 것으로 판단된다. 그렇다면 Heap 메로리 구조 안에서 객체는 어떻게 이동하는 것일까.. 2020. 9. 10.
[Web] 서블릿(Servlet) 이란? Servlet을 배우기 전에 우리는 CGI(Common Gateway Interface)에 대해서 알아야 된다. CGI는 웹서버와 사용자 프로그램을 동작시키기 위한 인터페이스이다. 즉 이것을 구현해야 웹서버와 통신을 할 수 있다. Servlet정의를 살펴보면 '웹 프로그래밍에서 클라이언트 Request, Response를 처리할 수 있도록 반드시 구현해야 하는 인터페이스' 즉 Servlet은 자바 CGI라고 말할 수 있다. 이러한 Servlet의 생성부터 소멸까지의 일련의 과정(Life Cycle)을 관리하는 것이 Servlet Container이다. 가장 대표적인 Servlet Container는 Tomcat이 있다. 위의 그림에서 Servlet Container가 요청이 들어오면 Thread를 생성하.. 2020. 9. 9.
[Java] 자바 가상 머신(JVM, Java Virtual Machine) 이란? JVM은 사전적 의미로 자바 바이트코드를 실행할 수 있는 주체다. JVM의 장점으로는 각 플랫폼에 독립적이다. JDK를 설치하기 위해서 OS에 맞는 파일을 찾아서 설치하는 것만으로도 알 수 있다. 그렇다면 JDK에 JVM이 포함되어 있나? 그렇다. JDK = JRE + Development Tools JRE = JVM + Library Classes 사실 JVM을 면접에서 또는 누군가 물어봤다면 다음 그림의 Runtime Data Areas의 역할을 제대로 알고 있는지가 궁금한 거라고 생각된다. Method Area : JVM 시작 시 생기는 영역으로 바이트코드가 저장된다. 클래스 정보, 변수 정보, static으로 선언한 변수가 저장되며 모든 스레드가 공유하는 영역이다. Heap : 동적으로 생성된 객.. 2020. 9. 8.