전체 글
-
[stack] valid parenthesesAlgorithm/LeetCode 2025. 3. 23. 11:09
✅ Problemhttps://leetcode.com/problems/valid-parentheses/description/ ✅ Approach & Solution방식1) Deque 인터페이스 사용한 Stack 구현더보기플로우(, {, [ : stack push), }, ] : stack pop빈 스택인 경우 : not valid대응하는 open bracket이 아닌 경우 : not valid빈 스택이 아닌 경우 : not validclass Solution { public boolean isValid(String s) { Deque stack = new ArrayDeque(); boolean result = true; for (int i = 0; i 방식2)..
-
[array] container with most waterAlgorithm/LeetCode 2025. 3. 22. 14:39
✅ Problemhttps://leetcode.com/problems/container-with-most-water/description ✅ Approach & Solution방식)더보기투 포인터 사용포인터 이동 시 한칸 씩 이동할 필요없음, 최소 height보다 클 때까지 이동시킴결과값이 커지려면 minHeight 값이 커져야 함 (right - left 는 포인터 이동할 때마다 무조건 작아지는 값이니까)class Solution { public int maxArea(int[] height) { int maxArea = 0; int left = 0; int right = height.length - 1; while (left
-
[JVM] 가비지 컬렉터와 메모리 할당 전략 (2) - 클래식 가비지 컬렉터 > G1 GCStudy/JVM 밑바닥까지 파헤치기 2025. 3. 18. 00:25
G1 컬렉터(가비지 우선 컬렉터)JDK 9부터 default gc 힙 메모리 레이아웃부분 회수(partial collection)와 리전(region)을 회수 단위로 하는 메모리 레이아웃 적용힙 메모리의 어느 곳이든 회수 대상에 포함할 수 있음이를 회수 집합(collection set)이라 하며 CSet이라 함어느 세대에 속하느냐가 아니라 '어느 영역에 쓰레기가 가장 많으냐'와 '회수했을 때 이득이 어디가 가장 크냐'가 회수 영역을 고르는 기준이 됨 (G1의 Mixed GC 모드)영역 기반 힙 메모리 레이아웃이 정지 시간 예측 모델 구현을 가능하게 함G1도 여전히 세대 단위 컬렉션 이론에 기초하고 있지만, 힙 메모리 레이아웃은 다른 컬렉터와 다름크기와 수가 고정된 세대 단위 영역 구분이 아닌, 연속된 자..
-
[JVM] 가비지 컬렉터와 메모리 할당 전략 (2) - 클래식 가비지 컬렉터Study/JVM 밑바닥까지 파헤치기 2025. 3. 18. 00:23
클래식 가비지 컬렉터 *신세대용1. 시리얼 컬렉터가장 기초적이고 오래된 컬렉터, JDK 1.3.1 전까지 핫스팟 가상 머신의 구세대용 컬렉터로는 유일한 선택지였음'단일 스레드'로 동작하나의 GC 스레드가 모두 처리한다.GC가 시작되면 '회수가 완료될 때까지 다른 모든 작업 스레드가 멈춰 있어야 한다'특징시리얼 컬렉터는 최신 JDK에서도 꾸준히 지원하고 있음다른 컬렉터의 단일 스레드 알고리즘보다 간단하고 효율적이라는 이점이 있음가용 메모리가 적은 환경에서는 알고리즘 자체가 요구하는 메모리 사용량이 가장 적음 단일 코어 프로세서 또는 코어 수가 적은 환경이라면 시리얼 컬렉터는 스레드 상호 작용에 의한 오버헤드가 없음-XX:+UseSerialGC 매개변수 추가하여 사용 가능 2. 파뉴 컬렉터여러 스레드를 활용..