본문 바로가기

전체 글230

serial garbage collection serial gc는 단일 스레드로 동작하는 gc 알고리즘이다. 단일 스레드로 동작하므로 구현하기 가장 쉬운 기초적인 알고리즘이며 앞으로 공부할 parallel gc, g1gc, cms gc와 같은 알고리즘을 왜 공부하고 사용해야하는지를 이해하기에 필수 불가결한 알고리즘이다. CPU 코어가 1개인 컴퓨터에서 주로 사용하며 실무에서 사용하는 경우는 없다. 동작 과정. Mark & Sweep & Compact 0. mark 과정 객체에 도달이 가능하지, 불가능한지 판별하는 작업이다. mark bit를 활용하여 마킹하며 serial gc의 과정은 STW 작업이기 때문에 애플리케이션이 중지된다. 1. young gc 첫번째 eden 영역에서 참조하지 않는 객체들을 지우고 survivor 영역으로 넘긴다. surv.. 2023. 4. 13.
Red-Black tree ( 레드-블랙 트리 ) 레드 블랙 트리가 나온 이유 Red-Black tree 는 이진 검색 트리를 기반으로 한 자료구조이다.이진 검색 트리는 한쪽으로 치우쳐 질 경우 검색에서의 시간 복잡도가 O(N)으로 증가하는 문제가 있다. 이를 해결하기 위한 것이 레드-블랙 트리이다. 레드 블랙 트리의 조건 각 노드는 자료구조의 이름에서 알 수 있듯이 검은색, 빨간색으로 표기되고 다음과 같은 조건을 만족한다. 1. 루트 노드는 검은색이다. 2. 모든 리프 노드들은 검은색이다. 3. 빨간색 노드의 자식은 검은색이다. ( 빨간색 노드가 연속으로 나올 수 없다. ) 4. 리프 노드에서 루트 노드까지 가는 경로에서 만나는 검은색 노드의 개수는 같다. 레드 블랙 트리의 장점 레드 블랙 트리는 리프 노드까지 경로의 노드 색을 제한함으로써 리프 노드.. 2023. 4. 12.
byte, string, file 간 변환 업무하다가 데이터 입출력에 관해서 너무 아는게 없어서 살짝 정리했다. BufferedWriter, BufferedReader 입출력 스트림으로부터 데이터를 읽고 쓰는데 사용됨. new BufferedReader(new InputStreamReader(new FileInputStream())) 같은 형태로 효율적이게 사용할 수 있음. 파일 읽는 스트림을 인풋 스트림 리더로 읽고 그걸 버퍼 리더로 효율적이게 읽는다. InputStreamReader, OutputStreamWriter 1. 입출력 속도 향상 InputStream은 파일, 네트워크 등 외부 자원으로부터 데이터를 읽어들일 수 있습니다. 이때, 데이터를 한 바이트씩 읽는 것보다 버퍼에 데이터를 미리 적재한 후 한 번에 읽어들이는 것이 훨씬 효율적입.. 2023. 4. 7.
JAVA 참조 유형과 관련된 자료구조 Strong, Soft, Weak, Phantom 순으로 설명하며 관련된 WeakMap자료구조를 설명한다. 1. Strong reference ( 강한 참조 )란? 우리가 일반적으로 User a = new User(); 방식으로 선언하는 방식이 Strong reference이다. a라는 변수가 참조하는 값이 존재하므로 GC대상이 되지 않는다. GC 대상이 되는 경우. 1. 스택에서 사용이 다 끝난 프레임이 사라지고 그 안에 만들었던 변수는 GC 대상이 됨. 2. 위 예제에서 a = null; 을 호출하면 GC 대상이 됨. 2. Soft Reference ( 소프트 참조 )란? User a = new User(); SoftReference obj = new SoftReference(a); a = null;.. 2023. 4. 5.