스레드 생성이 비용이 많이 드는 것으로 간주되는 이유는 무엇입니까?
Java 튜토리얼에서는 스레드 생성에 상당한 비용이 든다고 명시되어 있지만, 그 실제 이유는 비용은 아직 불분명합니다. 이 기사에서는 비용이 많이 드는 특성에 기여하는 요소를 밝히기 위해 JVM의 스레드 생성 메커니즘을 자세히 살펴봅니다.
플랫폼 종속 오버헤드
스레드 생성에는 다음과 같은 오버헤드가 수반됩니다. 플랫폼마다 다릅니다. 호스트 OS 내에 네이티브 스레드를 설정하고, 스레드 스택에 대규모 메모리 블록을 할당하고, JVM 및 OS 데이터 구조를 초기화하는 것은 모두 이 오버헤드를 추가합니다.
리소스 소비
네이티브 스레드는 일단 생성되면 전체 수명 동안 상당한 리소스를 소비합니다. 여기에는 할당된 스레드 스택, 스택에서 액세스할 수 있는 개체, JVM 스레드 설명자 및 OS 기본 스레드 설명자가 포함됩니다.
벤치마크 증거
벤치마킹 활동을 통해 스레드 생성이 밝혀졌습니다. 2002년에 Java 1.4.1을 실행하는 듀얼 프로세서 Xeon 시스템에서 초당 약 4000회의 속도로 발생했습니다. 최신 플랫폼에서는 향상된 성능을 제공하지만 스레드 생성 비용은 상대적으로 높습니다.
가상 스레드 및 Project Loom
Java 플랫폼은 전통적으로 성능상의 이유로 네이티브 스레드를 사용해 왔습니다. 그러나 OpenJDK Loom 프로젝트는 가상 스레드를 잠재적인 솔루션으로 도입합니다. 이러한 스레드는 네이티브 스레드와 그린 스레드를 결합한 하이브리드로, 동시성을 유지하면서 네이티브 스레드 생성과 관련된 오버헤드를 줄이는 것을 목표로 합니다.
OpenJDK의 스택 할당
OpenJDK 6 Linux에서는 mmap을 사용하여 pthread_create 호출을 통해 네이티브 스레드에 대한 스택 메모리를 할당합니다. 이 메모리는 새 Java 스레드 스택의 제로화에 관한 JVM 사양의 가정에 따라 자동으로 0으로 초기화됩니다.
요약하자면, 스레드 생성은 새 Java 스레드 스택을 설정하는 데 관련된 상당한 오버헤드로 인해 비용이 많이 드는 것으로 간주됩니다. 네이티브 스레드를 사용하여 대규모 메모리 블록을 할당하고 수명 전반에 걸쳐 다양한 리소스를 소비합니다. 또한 플랫폼별 요인이 스레드 생성의 정확한 비용에 영향을 미칩니다.
위 내용은 Java에서 스레드를 생성하는 것이 비용이 많이 드는 것으로 간주되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!