목록JVM (20)
hyeonga_code

1. 공유 메모리 기법스레드들이 공유하는 메모리 영역을 사용하여 데이터를 공유합니다. 스레드는 공유 변수나 객체를 통해 서로의 상태를 체크하고 조작할 수 있습니다. volatile 키워드를 사용한 변수 synchronized 블록을 통한 동기화 Amonic 클래스 등을 사용하여 데이터 일관성과 스레드 안전성을 보장합니다. 2. 메세지 전달 기법스레드 간의 메세지를 명시적으로 보내고 받는 방식입니다. 스레드가 직접적으로 데이터를 공유하지 않고 메세지를 통해 필요한 정보를 교환합니다. BlockingQueue 같은 스레드 안전한 큐를 사용하여 스레드 간에 메세지를 전달할 수 있습니다. 생산자 스레드는 큐에 데이터를 넣고 소비자 스레드는 데이터를 꺼내 처리합니다. 공유 메모리와 메세지 전달 비교공유 메모리 기..

스레드 종류 - 프로그램이 동작하는 단계[ User Program ]---------------------------------------------[ OS Kernel ]---------------------------------------------[ Memory ] [ CPU ] [ Devices ] => ( Hardware ) 코어의 고민메모리에서 데이터를 기다리는 시간이 꽤 오래 걸립니다. 코어에서 프로그램이 실행될 때 프로그램의 각종 연산 작업 등의 메모리에 접근하는 과정이 오래 걸려 CPU를 낭비하게 됩니다. 메모리를 기다리는 과정에 다른 CPU를 실행하게 하는 방법을 고민하..

프로세스컴퓨터에서 실행 중인 프로그램입니다. 각각의 프로세스는 독립된 메모리 공간을 할당 받아 명령어들과 데이터를 가집니다. CPU Central Processing Unit 명령어를 실행하는 연산 장치입니다. 메인메모리 프로세스가 CPU에서 실행되기 위해 대기하는 곳입니다. IO 파일을 읽고 쓰거나 네트워크의 어딘가와 데이터를 주고 받는 것입니다. 혹은 입출력 장치와 데이터를 주고 받는 것입니다. 단일 프로세스 시스템 : 한 번에 하나의 프로그램만 실행되는데 CPU 사용률이 좋지 않습니다.> CPU에서 P1 프로세스를 실행하다가 IO 작업을 만나면 P1 작업을 일시중지 하고 IO 작업이 종료될때까지 CPU가 멈추어 있습니다. 단일 프로세스 시스템의 단점을 개선하기 위해멀티프로그래밍 여러 개의 프..

1. GC 는 reachable 만 남기는 것GC 이름대로 unreachable이 중요한 것이 아니라 reachable한 객체를 어떻게 남기는 지가 중요한 것살아있는 객체를 어떻게 살릴것인지가 관건입니다.Oracle의 GC 개발자가 만든 유튜브 영상 확인하기 2. Compact 단계에서의 메모리 압축메모리를 압축하는 것이 아닙니다.4bite 간격으로 데이터를 정렬/쌓는 과정입니다. 3. Heap 의 크기 Young 영역이 Old 영역보다 크다.Young 영역이 작아서 속도가 빠른 것이 아닙니다.Young 영역에 reachable로 남는 객체가 적어 비교적 가벼워 처리 속도가 빠른것입니다.상대적으로 Old 영역 내에 reachable 객체가 많아 속도가 비교적 느린 것입니다.Young 영역 70% , ..

Non Stop-the-World (Non-STW)애플리케이션의 실행을 일시중지 하지 않거나 중지 시간을 최소화하여 GC를 수행하는 접근 방식입니다. 기존의 GC 기법에서 사용하는 STW 이벤트는 애플리케이션 스레드를 모두 일시 중지시키고 힙 전체를 안전하게 스캔하고 정리할 수 있도록 합니다. 그러나 애플리케이션의 반응성과 실시간 처리 능력에 부정적인 영향을 미칠 수 있습니다.Non-STW는 실시간 시스템이나 높은 응답성이 요구되는 애플리케이션에 유리합니다. 특징1. GC 작업을 애플리케이션의 스레드가 계속 실행되는 동안 병행하여 수행합니다. 이는 GC의 오버헤드가 애플리케이션의 메인 작업에 영향을 덜 미치도록 합니다. 2. 애플리케이션의 일시 중지 시간을 최소화하여 사용자 경험과 시스템의 반응성을 개..

JVM_17_GC 다시 알기 (수정사항)1. GC 는 reachable 만 남기는 것GC 이름대로 unreachable이 중요한 것이 아니라 reachable한 객체를 어떻게 남기는 지가 중요한 것살아있는 객체를 어떻게 살릴것인지가 관건입니다.Oracle의 GC 개발자가 만hyeonga493.tistory.com Stop the WorldGC가 동작하기 위해 GC 스레드가 실행될 때에는 어플리케이션과 관련된 다른 스레드는 실행되지 않는 것을 의미합니다. GC가 동작함으로써 JVM의 메모리를 확보할 수 있다는 장점이 있습니다. 다른 스레드들이 멈추므로 프로그램의 성능이 저하되는 단점이 있습니다. Minor GC / Major GC 둘 다 실행될 때에는 STW 가 발생하여 다른 스레드들이 중지합니다. Min..

JVM_17_GC 다시 알기 (수정사항)1. GC 는 reachable 만 남기는 것GC 이름대로 unreachable이 중요한 것이 아니라 reachable한 객체를 어떻게 남기는 지가 중요한 것살아있는 객체를 어떻게 살릴것인지가 관건입니다.Oracle의 GC 개발자가 만hyeonga493.tistory.com Space ReclamationYoung 영역과 Old 영역을 구분하지 않고 힙 영역에 저장되어 있는 객체들을 상대로 메모리를 회수해 가는 과정입니다. Old 영역에 여유 공간이 있는 경우 지워야 하는 객체가 있어도 메모리를 회수하지 않고 종료합니다. G1 GC 는 애플리케이션이 동작하는 도중에 여유 공간이 충분하지 않은 경우 `Stop-the-World` 를 발생시키고 Major GC를 발생시..

JVM_17_GC 다시 알기 (수정사항)1. GC 는 reachable 만 남기는 것GC 이름대로 unreachable이 중요한 것이 아니라 reachable한 객체를 어떻게 남기는 지가 중요한 것살아있는 객체를 어떻게 살릴것인지가 관건입니다.Oracle의 GC 개발자가 만hyeonga493.tistory.comG1 GC 동작 과정1. 초기 마크 Initial Mark일반적으로 Minor GC와 함께 발생합니다. Young Generation의 객체를 대상으로 하며 초기 마크 단계에서 GC 루트에서 직접 접근이 가능한 객체들과 젊은 세대에서 살아남은 객체들을 마킹합니다.`Stop-the-World` 가 발생합니다. > 짧은 시간동안 일어나며 G1은 모든 라이브 객체를 신속하게 식별합니다. 2. 루..

JVM_17_GC 다시 알기 (수정사항)1. GC 는 reachable 만 남기는 것GC 이름대로 unreachable이 중요한 것이 아니라 reachable한 객체를 어떻게 남기는 지가 중요한 것살아있는 객체를 어떻게 살릴것인지가 관건입니다.Oracle의 GC 개발자가 만hyeonga493.tistory.comG1 GCHeap 영역을 구역으로 구분해서 바둑판 형태로 구성합니다. Heap 영역에 저장되는 객체는 처음에 Young 영역으로 구분되는 구역에 할당합니다. Young 영역에서 GC가 동작한 이후 살아남은 객체는 Old 영역으로 구분되는 구역에 저장됩니다. Young 영역에 집중적으로 메모리 확보를 하여 효율적으로 구현할 수 있고 Old 영역에서 간간히 메모리를 확보하여 `Stop-the-Worl..

JVM_17_GC 다시 알기 (수정사항)1. GC 는 reachable 만 남기는 것GC 이름대로 unreachable이 중요한 것이 아니라 reachable한 객체를 어떻게 남기는 지가 중요한 것살아있는 객체를 어떻게 살릴것인지가 관건입니다.Oracle의 GC 개발자가 만hyeonga493.tistory.comGC자동으로 자바의 메모리를 관리해주는 기술입니다. 개발자가 직접 메모리를 관리하지 않아도 되는 편리함이 장점으로 메모리 누수에 대해 걱정하지 않아도 됩니다. 그러나 GC가 언제 동작하는지 개발자가 알 수 없고, 애플리케이션 실행 중에 GC 스레드가 실행되어 애플리케이션이 중단될 수도 있다는 단점이 있습니다. GC의 동작 방법에는 다양한 알고리즘을 활용한 메모리 회수 방법이 있습니다.1. Mark..