정의 Java의 Garbage Collector(이하, GC)는 C의 malloc()과 free()처럼 개발자가 직접 메모리를 할당하고 해제할 필요 없이 사용하지 않는 메모리 영역을 자동으로 해제하여 메모리 누수(memory leak)를 방지합니다. 유형 JVM의 heap 영역은 처음 설계될 때 다음을 전제로 설계되었습니다. 대부분의 객체는 금방 접근 불가능한 상태(Unreachable)가 됩니다. 오래된 객체에서 새로운 객체로의 참조는 아주 적게 존재합니다. 즉, 객체는 대부분 일회성이며, 메모리에 오랫동안 남아있는 경우가 드뭅니다. 객체의 생존 기간에 따라 물리적인 heap 영역을 나눴고 Young과 Old의 2가지 영역으로 설계되었습니다. Young 영역 새롭게 객체가 할당되는 영역 대부분의 객체가..
프로그래밍 언어
더보기 본 게시글은 정규식의 기본 규칙과 사용법에 대한 이해를 위한 글로, adjh54님의 개인 블로그 글을 참고했습니다. 정규표현식 (짧게는 정규식)은 문자열의 패턴을 확인하고, 일부 일치하는 정보를 추출하며, 문자열이 특정 패턴에 맞는지 확인할 수 있는 형식 언어입니다. 1. 정규표현식 패턴 (Regular Expression Pattern) 1.1 문자 클래스 (Character classes) - 문자와 숫자를 구분하는 것처럼 문자 종류를 구분하는 데 사용합니다. 정규식 패턴 설명 패턴 종류 예제 \\w 문자만 허용 (a-z, A-Z, 0-9, ...) String regExp = "^[\\w]*$"; \\W 문자가 아닌 경우에만 허용 ! (a-z, A-Z, 0-9, ...) String regE..
Java의 가장 큰 특징 중 하나는 어느 플랫폼, 어느 하드웨어, 어느 운영체제에 상관없이 컴파일된 코드(바이트코드)가 플랫폼 독립적이라는 점입니다. 이것이 가능한 것은 컴파일된 코드(바이트 코드)를 실행시켜주는 가상 컴퓨터 JVM(JAVA Virtual Machine) 덕분입니다. 1. 자바 실행 과정 JVM 동작 원리를 이해하기 위해선 먼저 Java 코드의 동작 원리를 파악해야 합니다. Java 코드 동작 원리 작성한 자바 소스 코드 파일(.java) 을 자바 컴파일러(javac)를 통해 바이트 코드(.class)로 컴파일합니다. 컴파일된 바이트 코드를 JVM의 클래스 로더에게 전달합니다. 클래스 로더는 동적 로딩을 통해 필요한 클래스들을 JVM의 메모리인 런타임 데이터 영역에 로딩합니다. 실행 엔진..