jvm 3

[Dev] 프로세스 메모리 할당과 JVM

🍎 저수준에서 힙영역 메모리 할당에 관하여 알아보고 운영체제의 상을 차용한 JVM 에선 어떤 차이가 있는지 알아보는 글입니다.(저수준의 언어 == C언어)🍏 프로세스 주소 공간과 구성 요소의 역할- 프로세스의 주소 공간은 위 이미지와 같이 구성되며, 코드 영역은 낮은 주소부터 시작하고, 스택 영역은 높은 주소부터 하향식으로 동적으로 확장됩니다. Code Area(코드 영역)프로세스의 주소 공간의 코드 영역에는 프로그래머가 작성한 코드, 더 정확하게는 컴파일한 후 생성된 실행 가능한 명령어가 저장됩니다. 스레드가 공유하는 영역이며 프로그램이 실행되는 동안은 코드를 수정할 방법이 없으므로 스레드 안전 문제가 발생하지 않습니다.Data Area(데이터 영역)데이터 영역은 전역 변수가 저장되는 곳입니다..

Dev 2024.11.12

[Python] Multi Processing과 [Java] Multi Processing 차이

🍎 Python Crawling Application을 개발하면서 I/O Bound 작업 처리는 Thread를 사용해 처리하는 것이 유리하고 CPU Bound 작업 처리 시엔 자식 프로세스를 여럿 생성해 작업을 처리하는 것이 유리하다고 배웠습니다. 그런데 Java 진영에선 Multi Processing을 어떻게 처리할까요? ❓ 어디서부터 비롯된 궁금증인가요? • Python 진영에선 Multi Processing을 자식 프로세스를 생성해 CPU Bound 작업을 맡아하는 반면 Java 진영에선 여러개의 JVM Instance를 추가적으로 생성해 처리하지 않습니다. 어떤 방식으로 Java 진영에서 Multi Processing을 처리할까요? 🍎 Java는 Thread를 통해서 Multi Processing..

TIL 2023.04.24

동기화와 병렬 처리 둘의 상관 관계 그리고 Java

🍎 많은 곳에서 등장하는 Keyword인 동기화와 병렬 처리를 이번 기회에 확실하게 하고자 정리합니다. 나아가 사용하고 있는 Java 라는 언어, 특히 JVM 위에서 어떤 방식으로 동기화와 병렬 처리를 수행하는지 알아보고자 해당 글을 작성합니다. ❓동기화란?동시다발적으로 실행되는 프로세스들은 공동의 목적을 올바르게 수행하기 위해 서로 협력하며 영향을 주고 받기도 합니다. 협력하여 실행되는 프로세스들은 실행 순서와 자원의 일관성을 보장해야 하기 때문에 반드시 “동기화” 되어야 합니다.프로세스 동기화란 프로세스들 사이의 수행 시기를 맞추는 것을 의미합니다. 또한 실행의 흐름을 갖는 모든 것은 동기화의 대상입니다.동기화에는 실행 순서 제어를 위한 동기화가 있고, 상호 배제를 위한 동기화가 존재합니다. ❓병렬..

Dev 2023.04.03