2012-12-14 2 views
4

내 Java 코드를 실행하는 JVM에 대해이 질문이 있습니다. 내 친구는 2.4GHz 또는 2.5GHz 듀얼 코어를 사용하는 반면 2GHz 쿼드 코어를 사용합니다. 이제 내 질문은 : 자바는 모든 코어를 사용 하나 아니면 하나만 사용합니까? 내 친구는 Java가 1 코어를 사용한다고 생각했기 때문에 코어의 클록 속도가 나의 것보다 높기 때문에 더 나은 실행 시간을 가질 수있었습니다.Java VM - 내 코어를 사용하는 Eclipse?

+2

자바는 많은 코어를 사용하는 모든 동시'JVM을 응용 프로그램이 실행 Thread's. – Zutty

+0

GUI가없고 응용 프로그램에서 멀티 스레딩을 사용하지 않으면 프로그램에서 하나의 코어 만 사용합니다. – jlordo

답변

6

JVM 자체는 여러 개의 스레드를 사용합니다 (OS 스케줄러의 분위기에 따라 다름).

프로그램은 사용자가 사용하도록 요청한만큼 많은 스레드를 사용합니다. 코드가 단일 스레드 인 경우 순차적이며 다중 코어 아키텍처의 이점은 없습니다. 단, 단일 스레드는 둘 이상의 코어를 사용할 수 있지만 동시에 사용할 수는 없습니다.

+0

더 많은 스레드를 요구하지는 않았습니다. 순차적으로 실행되는 프로그램 일 뿐이므로 코어 1 개만 사용합니까? – user1903753

+0

@ user1903753이 경우 코드는 하나의 코어 만 사용합니다. 그러나 위에서 언급했듯이 JVM은 가비지 콜렉션과 같은 백그라운드 작업을 실행하는 데 더 많은 코어를 사용함으로써 여전히 이익을 얻을 수 있습니다. – assylias

4

OS가 스레드를 사용 가능한 프로세서에 배포하는 경우 Java에서 여러 코어의 이점을 얻을 수 있습니다. JVM 자체는 스레드를 여러 코어에 고르게 스케줄링하기 위해 특별한 작업을 수행하지 않습니다.

일반적으로 Java 응용 프로그램은 별도의 코어에있는 모든 활성 스레드를 예약하려고합니다. 여기에는 가비지 수집기 스레드가 포함됩니다.

는 다음 링크를 살펴 보자 : 그것은 실행하는 데 필요한 같은

  1. how-does-java-makes-use-of-multiple-cores
관련 문제