2011-03-02 2 views
4

A.java라는 파일이 있다고 가정 해 봅시다. 컴파일하면 A.class가 두 개의 명령 프롬프트를 열었고 한 번에이 commandprompt에서 java A 명령을 실행한다고 가정합니다. jvm이 클래스를 두 번로드합니까?Jvm이 클래스 파일을 두 번로드합니까?

답변

9

"the"JVM이 없습니다. 자신의 힙, 클래스 로더 등 2 개의 별도 프로세스를 시작합니다. 클래스는 각 JVM에서 한 번씩 다른 클래스와 별도로 두 번로드됩니다.

+1

BTW는 @Reuben이 동일한 JVM을 사용했지만 두 가지 다른 클래스가 아니라면 똑같은 클래스를 두 번로드 할 수있었습니다. 두 개의 다른 클래스 로더 컨텍스트로 – Yaneeve

+0

@ Yaneeve - 사용자는 * 당신이 이것을 할 수있는 메커니즘의 존재; 명령 프롬프트에서 동일한 JVM에서 두 번 응용 프로그램을 실행합니다. 이것은 가설 적이므로 구현 방법을 예측할 수 없습니다. –

+0

@ Yaneeve는 좋은 지적입니다. 제기 된 질문에 대한 직접적인 대답이있는 반면, 캐주얼 한 독자는 JVM의 인스턴스가 하나만 있으면 대답이 달라진다는 추측을 할 수 있습니다. 그렇지 않습니다. – CurtainDog

2

두 개의 명령 프롬프트에서 java 명령을 실행하면 두 개의 JVM이 만들어지고 클래스는 각 JVM의 클래스 로더에 별도로로드됩니다.

2

예, 클래스가 두 번로드됩니다.

1

또한 클래스는 단일 JVM에 여러 번로드 될 수 있지만 클래스 로더 계층 구조는 서로 다릅니다.

관련 문제