728x90

자바 4

[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

[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