2024/03 5

[Java] Error & Exception

Java 프로그램을 실행시킬 때, 프로그램 로직이 잘못 설계되었거나, 외부적인 요인, 혹은 하드웨어 문제에 의해 오류가 발생한 적이 있을 것이다. 자바에서는 이렇게 예상과 다른 결과를 만들어 내거나, 심각하면 프로그램을 종료시키는 오류들을 Error와 Exception으로 구분한다.           Error vs Exception 정확히 말하자면, 자바에서는 오류를 'Checked Exception', 'Unchecked Exception', 'Error' 총 3개로 구분한다. 이러한 오류들은 개발자가 예측할 수 있는지, 핸들러를 통해 처리/복구할 수 있는지, 시스템 레벨과 애플리케이션 레벨중 어디에서 발생하는지, 예외처리가 강요되는지, RuntimeException을 상속하는지 등에 따라..

Java 2024.03.30

[Java] Garbage Collection

가비지 컬렉션은 자바의 메모리 관리 방법 중의 하나로, 메모리 누수를 막기 위해 JVM의 Garbage Collector가 사용하지 않는 객체를 삭제하는 것을 의미한다. 가비지 컬렉션에 대해 알아보기 전에 메모리 누수를 먼저 알아보자 Memory Leak (메모리 누수) 메모리 누수란 "동적으로 할당한 메모리가 free(할당 해제)될 수 없는 상태"를 의미한다. 즉, 어딘가에 할당되어 있던 메모리가 더이상 사용자가 제어하거나 접근할 수 없어서 할당된 메모리를 회수할 수 없는 상태를 의미한다. 다음 코드를 보면 이해가 빠를것이다. char *a = malloc(20); // 포인터 변수 a에 동적 메모리 할당 char *b = malloc(10); // 포인터 변수 b에 동적 메모리 할당 b = a; //..

Java 2024.03.10

[Java] 자바 가상 머신 (JVM, Java Virtual Machine)

JVM과 그 역할 JVM(Java Virtual Machine)은 자바 프로그램이 어느 기기나 운영체제 상에서도 실행될 수 있도록 하기 위해 물리적 머신과 유사한 머신을 소프트웨어로 구현한 것으로, 다양한 역할을 한다. 개발자들은 보통 JVM을 '어떤 기기상에서 실행되고 있는 프로세스, 특히 자바 앱에 대한 리소스를 대표하고 통제하는 서버' 라고 말한다. JVM의 역할 Java와 OS사이에서 중개자 역할을 수행하여, Java가 OS에 구애받지 않고 독립적으로 작동 가능하도록 한다 자바 애플리케이션을 클래스 로더를 통해 읽어들여 자바 API와 함께 실행한다 메모리 관리와 Garbage Collection을 수행한다 JVM의 구조와 작동 원리 JVM의 구조 Java Compiler (JAVAC) 자바 소스코..

Java 2024.03.03

[Java] 고유락(Intrinsic Lock)과 동기화(synchronization)

동기화란? 멀티 스레드 환경에서는, 공유된 자원(변수나 객체 등)에 대해 여러 스레드가 동시에 접근하면서 예상치 못한 결과가 발생할 수 있다. 예시를 통해 알아보자 // Runnable을 구현해서 스레드 정의 public class RunnableThread implements Runnable{ private final Number number; public RunnableThread(Number number) { this.number = number; } @Override public void run() { number.updateNum(); System.out.println("update End"); } } // 공유된 자원 public class Number { private long num = 0..

Java 2024.03.03