728x90

🌱Java | Spring 11

[Java] Java의 메모리 관리(2)

이전 Java Memory 영역에 대한 설명에 이어 참조 타입과 GC의 동작에 대해 알아보자! 🙋‍♂️ 이전 포스팅 : https://dev-jy.tistory.com/56 [Java] Java의 메모리 관리(1) Java의 Memory 영역 Java 프로그램이 실행되면 JVM(Java Virtual Machine)은 OS로부터 메모리를 할당받고, 그 메모리를 용도에 따라 여러 영역으로 나누어 관리한다. JVM의 메모리 공간(Runtime Data Area)은 크게 M dev-jy.tistory.com 아래의 Memory 구조 그림을 자세히 보면, Heap에서 객체에 대한 참조를 나타내는 화살표가 다르게 생긴것을 알 수 있다.😶‍🌫️ Java에서는 Strong Reference, Weak Referenc..

🌱Java | Spring 2022.07.31

[Java] Java의 메모리 관리(1)

Java의 Memory 영역 Java 프로그램이 실행되면 JVM(Java Virtual Machine)은 OS로부터 메모리를 할당받고, 그 메모리를 용도에 따라 여러 영역으로 나누어 관리한다. JVM의 메모리 공간(Runtime Data Area)은 크게 Method(Static) 영역, Stack 영역, Heap 영역으로 구분되고 Data Type에 따라 각 영역에 나누어 할당 된다. 컴퓨터의 메모리는 사용 가능한 공간이 한정되어 있기 때문에 어떻게 관리하느냐에 따라 프로그램의 성능이 좌우된다. 따라서 같은 기능의 프로그램이라 하더라도 메모리 관리에 따라 성능 차이가 크게 나타난다. 따라서 Java Application에서 메모리를 효율적으로 사용하기 위해 메모리 구조와 특징, GC의 동작 방식에 대해..

🌱Java | Spring 2022.07.24

[Spring] Filter vs Interceptor

Spring에서 중복된 코드를 제거할 수 있도록 공통적으로 작업을 처리할 수 있는 기능들을 많이 제공하고 있는데, 그 중 Filter와 Interceptor의 차이에 대해 알아보자. 먼저, 아래의 그림을 보고 차이점에 대해 자세히 알아보자. Filter Filter는 J2EE 표준 스팩 기능으로 Dispatcher Servlet에 요청이 전달되기 전/후에 url 패턴에 맞는 모든 요청에 대해 부가적인 작업을 처리할 수 있는 기능을 제공한다. Dispatcher Servlet은 Spring의 가장 앞 단에 존재하는 Controller로 Filter는 Spring 범위 밖에서 처리가 이루어 진다. 즉, Filter는 Spring Bean으로 등록은 되지만 톰캣과 같은 Web Container에 의해 관리가 ..

🌱Java | Spring 2022.07.18

[Spring] Spring MVC

MVC 패턴이란 무엇일까? 🤔 MVC 패턴이랑 소프트웨어 디자인 패턴 중 하나로 Model, View, Controller 세 가지 요소로 이루어진 패턴이다. - Model : 애플리케이션의 정보나 데이터, DB 등 - View : 사용자에게 보여지는 화면 - Controller : View와 Model이 직접적인 상호 소통을 하지 않도록 관리, 데이터와 비즈니스 로직 사이의 상호 동작을 관리 MVC1 MVC1의 경우 View와 Controller를 모두 JSP에서 담당하여, JSP 하나로 유저의 요청을 받고 응답을 처리한다. JSP 하나로 MVC가 모두 이루어지니 재사용성도 떨어지고, 읽기도 힘들어진다. 유지보수에 있어 문제가 발생한다. MVC2 MVC2의 경우 MVC1과 다르게 Controller와 ..

🌱Java | Spring 2022.06.30

[Java] 추상클래스 vs 인터페이스

클래스는 크게 일반 클래스와 추상 클래스로 나뉘고, 추상 클래스란 클래스 내부에 추상 메서드가 하나 이상 포함되거나 abstract로 정의된 경우를 말한다. 반면, 인터페이스는 모든 메서드가 추상 메서드인 경우이다. 단순히 생각하면, 모든 메서드가 추상 메서드이냐 아니냐에 따라 추상 클래스와 인터페이스를 구분할 수 있을 것 같지만, Java8 이후부터는 default 키워드를 이용해 인터페이스에서 일반 메서드의 구현도 가능하기 때문에 확실한 차이점이라고는 할 수 없다. 그렇다면 추상메서드와 인터페이스는 뭐가 다른 걸까? 🤔 일단, 생김새도 다르고 사용하는 방법도 다르지만 하는 일은 비슷해 보인다. 하지만, 애초에 이 둘은 존재 목적이 다르다. 추상 클래스는 해당 클래스를 상속받아 기능을 이용하고, 확장시..

🌱Java | Spring 2022.06.14

[Java] String?

Java에서 문자열을 다루는 대표적인 클래스는 String, StringBuffer, StringBuilder가 있다. 연산이 많지 않은 경우 세 가지 중 어떤 클래스를 사용하더라도 상관없지만, 연산이 많거나 멀티스레드, Race condition 등의 상황이 자주 발생한다면 상황에 맞는 클래스를 사용하는 것이 성능에 이점이 있다. 어떤 상황에 어떤걸 쓰라는 말인가요..? 🙋‍♂️ 위의 세 가지 클래스에 대해 한번 알아보자. 먼저, String과 StringBuffer, StringBuilder의 가장 큰 차이점은 String은 immutable 하다는 것이다. String str = "Hello"; // String str = new String("Hello") str = str + " world!";..

🌱Java | Spring 2022.06.01
728x90