| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
- 파이썬 문자열 메서드
- stop the world
- 파이썬
- 딕셔너리
- 다이렉트 레퍼런스
- 컴포넌트 스캔
- 클래스 로더 계층
- 객체지향
- AWS SAA-C03 합격후기
- 알고리즘
- dfs
- java
- 스프링
- 어플리케이션 클래스 로더
- 부트스트랩 클래스 로더
- 2026 AWS SAA-C03
- BFS
- 백준
- 스프링 컨테이너
- getreference
- 코딩테스트
- python list method
- 자료구조
- aws saa-c03
- 플랫폼 클래스 로더
- python
- 심볼릭 레퍼런스
- Spring
- 자바
- 파이썬 리스트 메서드
- Today
- Total
목록Programming Language/JAVA (7)
클라우드 낚시꾼
STOP THE WORLD란? STW란 GC가 가비지 컬렉션을 수행하는 동안에 모든 어플리케이션 스레드를 중단하는 하는 것을 의미한다. STW로 인하여 모든 어플리케이션 스레드가 멈춰 모든 어플리케이션이 중단된다.STOP THE WORLD의 단점 1. 중단 시간 가비지 컬렉션 과정 중에 모든 프로그램이 일시 중단되어 응답 시간이 길어져 사용자 경험이 저하되는 현상이 발생한다. 특히, 실시간성이 중요한 시스템에서 이는 큰 문제가 된다. 2. 가비지 컬렉션 오버헤드 가비지 컬렉션 오버헤드 시간이 길어지면 이 작업을 수행하기 위한 추가적인 시간과 리소스가 소비된다.STOP THE WORLD가 발생해야 하는 이유GC는 객체의 참조 상태를 기반으로 메모리 회수 여부를 결정한다. 이때, 만약 모든 어플리케이션 스레..
심볼릭 레퍼런스와 다이렉트 레퍼런스심볼릭 레퍼런스: 클래스 파일 내에 사용되는 기호적인 참조를 의미한다. (클래스 이름, 메서드 이름 등)다이렉트 레퍼런스: 실제 메모리 주소나 런타임 시점에 참조할 수 있는 위치를 의미한다.심볼릭 레퍼런스를 다이렉트 레퍼런스로 변환하는 이유 심볼릭 레퍼런스는 메모리 주소나 위치를 직접 나타내지 않으므로, 실행 시 마다 이를 반복적으로 확인하면 성능이 저하될 수 있다. 다이렉트 레퍼런스는 JVM이 런타임 시점에 해당 참조를 빠르게 액세스할 수 있기에 심볼릭 레퍼런스를 다이렉트 레퍼런스로 변환한다. 심볼릭 레퍼런스를 다이렉트 레퍼런스로 변환하는 과정로딩 및 검증 단계: JVM은 클래스 파일을 읽어드린 후, 심볼릭 레퍼런스가 참조하는 대상이 존재하는 지 확인한다.해석 단계: ..
클래스 로더란? 클래스 로더는 클래스 파일을(바이트 코드) 동적으로 로딩 및 링크하여 JVM의 메모리 영역에 적재하는 역할을 한다.클래스 파일의 로딩 순서로딩: 클래스 파일을(바이트 코드) 가져와 JVM의 메모리 영역에 로드한다.링크: 클래스 파일을 사용하기 위해 검증하는 과정이다.검증: 읽어드린 클래스 파일이 JVM 명세에 명시된 대로 구성되어 있는 지 검사한다.준비: 로딩 단계에서 할당 받은 메모리를 초기화한다.분석: 심볼릭 레퍼런스를 다이렉트 레퍼런스로 변환한다.초기화: 정적 초기화 블록과 정적 변수를 초기화한다.Class Loader의 특징 및 원칙 1. Delegation(위임 원칙): 부모 클래스로더 방향으로 클래스 로딩을 위임한다. 2. Visibility(가시범위 원칙): 자식 클래스 로더..
이 글에서는 JAVA에서 변수의 종류와 초기화, Null에 대해 알아볼 것이다. 변수의 종류 자바에서는 변수의 선언 위치가 변수의 종류를 결정한다. 멤버 변수 = 클래스 영역에서 선언된 변수 클래스 변수 = static 키워드가 있고, 클래스가 메모리에 올라갈 때 생성 인스턴스 변수 = static 키워드가 없고, 클래스로부터 인스턴스가 생성될 때 생성 지역 변수 = 블럭 내부에서 선언된 변수 변수 선언문이 수행되었을 때 생성 매개변수도 지역 변수다 클래스 변수와 인스턴스 변수 public class Student { // 클래스 변수 static int amountOfStudent; // 학생의 수 // 인스턴스 변수 String name; int age; int grade; } 클래스 변수 저장공간의..
많은 사람들이 기본형과 참조형에 대해서는 다 알고 있다고 생각하여 휙휙 넘어간다. 하지만, 그대는 정말 다 알고 있는가? 필자는 확신이 없기에 이 글에서 기본형과 참조형에 대해 최대한 간단하고 명료하게 핵심만 짚고 넘어가볼라고 한다. 기본형 VS 참조형 - 무엇을 저장하는가? 기본형: int, long, double, boolean처럼 변수에 사용할 값을 직접 넣을 수 있는 데이터 타입을 기본형이라 한다. 참조형: Movie movie1, Movie[] movies와 같이 데이터에 접근하기 위한 참조(주소)를 저장하는 데이터 타입을 참조형이라 한다. 객체와 배열이 대표적인 참조형이다. 객체는 .(dot)을 통해서 메모리 상에 생성된 객체를 찾아간다. 배열은 []을 통해서 메모리 상에 생성된 배열을 찾아간..
이번 글에서는 JAVA에서 어떻게 클래스를 통해 객체를 생성하고, 내부적으로는 무슨 일이 발생하는 지에 대해 알아볼 것이다. 먼저, 개념을 알아보자. 클래스, 객체, 인스턴스 클래스: 객체의 설계도로서 객체의 특징(멤버 변수)과 기능(메서드)을 포함하고 사용자 정의 타입으로 불린다 (ex) 아이폰 설계도 객체: 클래스로부터 만들어져 메모리에 존재하는 실체 (ex) 생성된 아이폰 인스턴스: 클래스로부터 만들어진 실체로서 특정 클래스로부터 생성된 객체를 의미 (ex) 생성된 아이폰 객체, 인스턴스는 클래스로부터 만들어진 실체라는 점만 기억하면 된다. 인스턴스는 객체보다 조금 더 클래스와의 관계를 강조하는 용어이다. 아래는 그 예시다. Student 클래스를 인스턴스화 하여 student1 객체를 생성 stu..
자바는 객체 지향 언어이다. 즉, 자바 프로그램은 객체들의 상호작용이다. 그렇기에 자바에서 클래스와 객체 개념은 정말 중요하다. 이 글에서는 데이터 저장 형태의 발전 과정과 이에 따른 클래스의 필요성을 알아보겠다. 변수에서 배열로의 발전 변수란 하나의 데이터를 저장할 수 있는 공간이고 배열은 같은 타입의 변수 여러 개를 연속적으로 생성하여 한 뭉텅이로 다루는 데이터 저장 형태이다. 배열은 변수의 단점 2가지를 보완하였다. 학생 1000명에 대한 정보를 변수로 다룬다면, 변수 1000개를 여러 줄의 코드로 생성해야 한다. -> 배열은 변수 1000개를 코드 1줄로 생성한다. 학생 1000명 중 567번째 학생에 접근할 때 개발자가 직접 찾아야 한다. -> 배열은 인덱스를 이용해 특정 변수에 쉽게 접근 가능..