목록분류 전체보기 (462)
hyeonga_code
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/q93UX/btsHlyfWtpT/oXh4SApWsHXvnXLFciYXlK/img.png)
스레드 종류 - 프로그램이 동작하는 단계[ User Program ]---------------------------------------------[ OS Kernel ]---------------------------------------------[ Memory ] [ CPU ] [ Devices ] => ( Hardware ) 코어의 고민메모리에서 데이터를 기다리는 시간이 꽤 오래 걸립니다. 코어에서 프로그램이 실행될 때 프로그램의 각종 연산 작업 등의 메모리에 접근하는 과정이 오래 걸려 CPU를 낭비하게 됩니다. 메모리를 기다리는 과정에 다른 CPU를 실행하게 하는 방법을 고민하..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bGQxlL/btsHjuMlRAe/4sMEGBEW5jQsGNy8ebOgd1/img.png)
프로세스컴퓨터에서 실행 중인 프로그램입니다. 각각의 프로세스는 독립된 메모리 공간을 할당 받아 명령어들과 데이터를 가집니다. CPU Central Processing Unit 명령어를 실행하는 연산 장치입니다. 메인메모리 프로세스가 CPU에서 실행되기 위해 대기하는 곳입니다. IO 파일을 읽고 쓰거나 네트워크의 어딘가와 데이터를 주고 받는 것입니다. 혹은 입출력 장치와 데이터를 주고 받는 것입니다. 단일 프로세스 시스템 : 한 번에 하나의 프로그램만 실행되는데 CPU 사용률이 좋지 않습니다.> CPU에서 P1 프로세스를 실행하다가 IO 작업을 만나면 P1 작업을 일시중지 하고 IO 작업이 종료될때까지 CPU가 멈추어 있습니다. 단일 프로세스 시스템의 단점을 개선하기 위해멀티프로그래밍 여러 개의 프..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/oVZjy/btsHjebR8PS/4rjizyuh657QIQGH1vf0OK/img.png)
1. GC 는 reachable 만 남기는 것GC 이름대로 unreachable이 중요한 것이 아니라 reachable한 객체를 어떻게 남기는 지가 중요한 것살아있는 객체를 어떻게 살릴것인지가 관건입니다.Oracle의 GC 개발자가 만든 유튜브 영상 확인하기 2. Compact 단계에서의 메모리 압축메모리를 압축하는 것이 아닙니다.4bite 간격으로 데이터를 정렬/쌓는 과정입니다. 3. Heap 의 크기 Young 영역이 Old 영역보다 크다.Young 영역이 작아서 속도가 빠른 것이 아닙니다.Young 영역에 reachable로 남는 객체가 적어 비교적 가벼워 처리 속도가 빠른것입니다.상대적으로 Old 영역 내에 reachable 객체가 많아 속도가 비교적 느린 것입니다.Young 영역 70% , ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bGnoql/btsHjTkLtld/NkxQTy5FcuNyAtE2YbpQUK/img.png)
Non Stop-the-World (Non-STW)애플리케이션의 실행을 일시중지 하지 않거나 중지 시간을 최소화하여 GC를 수행하는 접근 방식입니다. 기존의 GC 기법에서 사용하는 STW 이벤트는 애플리케이션 스레드를 모두 일시 중지시키고 힙 전체를 안전하게 스캔하고 정리할 수 있도록 합니다. 그러나 애플리케이션의 반응성과 실시간 처리 능력에 부정적인 영향을 미칠 수 있습니다.Non-STW는 실시간 시스템이나 높은 응답성이 요구되는 애플리케이션에 유리합니다. 특징1. GC 작업을 애플리케이션의 스레드가 계속 실행되는 동안 병행하여 수행합니다. 이는 GC의 오버헤드가 애플리케이션의 메인 작업에 영향을 덜 미치도록 합니다. 2. 애플리케이션의 일시 중지 시간을 최소화하여 사용자 경험과 시스템의 반응성을 개..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/n94qA/btsHiEu6k1d/TRiNSwUwIlsB3lVX17tzb0/img.png)
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..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/nGbLQ/btsHkMr9VBr/7gTiBII2MKRrcvXHVDc7QK/img.png)
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를 발생시..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Rq3Ul/btsHkWBgR4J/TMqUvEpltG21CGAF90gg50/img.png)
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. 루..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bBDU5E/btsHiecmwsS/JO2NN1BumxSNXIncsjeMf1/img.png)
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..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/POvTJ/btsHjTrvAAd/Oz4ARKxWGCV5Vnoac4PTKk/img.png)
JVM_17_GC 다시 알기 (수정사항)1. GC 는 reachable 만 남기는 것GC 이름대로 unreachable이 중요한 것이 아니라 reachable한 객체를 어떻게 남기는 지가 중요한 것살아있는 객체를 어떻게 살릴것인지가 관건입니다.Oracle의 GC 개발자가 만hyeonga493.tistory.comGC자동으로 자바의 메모리를 관리해주는 기술입니다. 개발자가 직접 메모리를 관리하지 않아도 되는 편리함이 장점으로 메모리 누수에 대해 걱정하지 않아도 됩니다. 그러나 GC가 언제 동작하는지 개발자가 알 수 없고, 애플리케이션 실행 중에 GC 스레드가 실행되어 애플리케이션이 중단될 수도 있다는 단점이 있습니다. GC의 동작 방법에는 다양한 알고리즘을 활용한 메모리 회수 방법이 있습니다.1. Mark..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/rYIvH/btsHec6chBH/qXLn3puz6x4Y4wzPpL5D3K/img.png)
동적 로딩 Dynamic Loading프로그램이 실행 중일 때 필요한 클래스나 라이브러리, 객체를 로드하는 방식입니다.지연 로딩 Lazy Loading 이라고도 합니다.장점사용하지 않는 모듈은 로드하지 않아 메모리 효율성이 높습니다.필요한 컴포넌트만 로드하여 확장에 유연합니다.개발 모듈이 독립적으로 업데이트가 가능하여 유지보수가 용이합니다.단점로딩 코드를 관리하고 의존성에 문제가 발생할 수 있습니다.실행 시점에 로드해야 하므로 초기 로딩 시간이 필요합니다.정적 로딩 Static Loading프로그램 실행 전에 필요한 모든 컴포넌트가 메모리에 로드되는 방식입니다.컴파일 타임에 코드와 라이브러리가 결정되어 실행 파일에 포함됩니다.시스템 소프트웨어에서 전체 시스템을 하나의 실행 파일로 컴파일합니다.장점추가적인..