본문 바로가기

GD's IT Lectures : 기초부터 시리즈187

[자바(JAVA)] 메모리 관리와 가비지 컬렉션 23. 메모리 관리와 가비지 컬렉션 23.1. 메모리 관리 개념 자바에서 메모리 관리는 JVM(Java Virtual Machine)이 담당합니다. JVM은 기본적으로 힙(Heap) 영역에서 객체를 관리합니다. 힙 영역은 크게 영구(Permanent) 영역, 노출(Young) 영역, 그리고 노출 영역의 서바이버(Survivor) 영역과 테넌트(Tenured) 영역으로 나눠집니다. 객체가 생성되면 노출 영역에 할당되고, 시간이 지남에 따라 서바이버와 테넌트 영역으로 이동하게 됩니다. 23.2. 가비지 컬렉션 동작 원리 가비지 컬렉션(GC)은 더 이상 사용되지 않는 객체를 자동으로 회수하여 메모리를 관리하는 프로세스입니다. GC는 JVM에 의해 실행되며, 객체가 더 이상 참조되지 않을 때 메모리를 회수합니다.. 2023. 4. 28.
[자바(JAVA)] 자바 어노테이션 22. 자바 어노테이션 22.1. 어노테이션 개념 어노테이션(Annotation)은 자바 소스 코드에 메타데이터를 추가하는 방법으로, 주석과 비슷한 역할을 합니다. 어노테이션은 컴파일러에게 정보를 제공하거나, 런타임에 코드 동작을 변경하거나, 프레임워크에서 코드를 처리하는 데 사용됩니다. 어노테이션은 '@' 기호와 함께 사용되며, 컴파일 또는 런타임에 처리할 수 있습니다. 22.2. 기본 어노테이션 자바에서는 몇 가지 기본 어노테이션을 제공합니다. @Override: 메소드가 부모 클래스의 메소드를 오버라이드 한다는 것을 나타냅니다. @Deprecated: 해당 요소가 더 이상 사용되지 않음을 나타냅니다. @SuppressWarnings: 특정 경고를 무시하도록 컴파일러에 지시합니다. @Functiona.. 2023. 4. 28.
[자바(JAVA)] Reflection API 21. Reflection API 21.1. 리플렉션 개념 자바 Reflection API는 실행 중인 자바 애플리케이션에서 클래스, 메서드, 필드 등의 정보를 분석하고 조작할 수 있는 기능을 제공합니다. 이는 컴파일 시간에는 알 수 없는 클래스와 그 클래스의 멤버들에 접근할 수 있는 방법을 제공합니다. Reflection API는 다양한 자바 라이브러리 및 프레임워크에서 사용되며, 특히 자바 프레임워크의 핵심 기능 중 하나인 스프링 프레임워크에서도 중요한 역할을 합니다 21.2. Class 클래스 Reflection API에서 핵심적인 클래스는 java.lang.Class입니다. Class 클래스는 JVM에서 로드된 클래스의 정보를 제공합니다. 즉, 클래스의 이름, 패키지, 메서드, 필드 등의 정보를 .. 2023. 4. 28.
[자바(JAVA)] 날짜와 시간 처리 20. 날짜와 시간 처리 자바에서 날짜와 시간을 처리하는 방법에는 여러가지가 있습니다. 이 강좌에서는 java.util.Date와 java.util.Calendar 클래스를 살펴보고, Java 8에서 도입된 java.time 패키지의 여러 클래스와 기능을 알아보겠습니다. 20.1. java.util.Date와 java.util.Calendar 클래스 Date 클래스는 1970년 1월 1일부터 현재까지의 시간을 밀리초 단위로 표현합니다. 이를 사용하여 현재 시간이나 특정 시간을 생성할 수 있습니다. Date currentDate = new Date(); Date specificDate = new Date(1633036800000L); Calendar 클래스는 날짜와 시간을 처리하는 데 더 많은 기능을 제공.. 2023. 4. 28.
[자바(JAVA)] 파일과 디렉터리 19. 파일과 디렉터리 19.1. File 클래스 자바에서 파일과 디렉터리를 관리하는 기본 클래스는 File 클래스입니다. java.io 패키지에 포함되어 있으며, 파일 및 디렉터리의 경로를 표현하고, 관련 작업을 처리하는 데 사용됩니다. File 객체를 생성할 때에는 파일이나 디렉터리의 경로를 인자로 전달해주어야 합니다. import java.io.File; public class Main { public static void main(String[] args) { File file = new File("test.txt"); File directory = new File("src/main/resources"); } } 19.2. 파일 및 디렉터리 생성, 삭제, 조회 File 클래스를 사용하면 파일 및 .. 2023. 4. 28.
[자바(JAVA)] 입출력 (I/O) 18. 입출력 (I/O) 18.1. 입출력 스트림 개념 자바에서 입출력(I/O)은 데이터를 읽고 쓰는 작업을 처리하는 데 사용됩니다. 자바는 입출력을 위한 스트림(Stream)이라는 개념을 도입하여, 데이터를 읽고 쓰는 작업을 추상화하여 처리합니다. 스트림은 단방향 통신 채널로, 입력 스트림은 데이터를 읽는 작업을, 출력 스트림은 데이터를 쓰는 작업을 수행합니다. 18.2. 바이트 스트림 (InputStream, OutputStream) 바이트 스트림은 바이트 단위로 데이터를 처리하는 입출력 스트림입니다. InputStream과 OutputStream은 바이트 스트림의 기본 클래스로, 주로 바이너리 파일이나 네트워크 통신 등 바이트 단위의 데이터 처리에 사용됩니다. 대표적인 하위 클래스로 FileInpu.. 2023. 4. 28.