programing

여러 Java 프로그램이 동일한 기계에서 실행되는 경우

itsource 2022. 11. 3. 22:14
반응형

여러 Java 프로그램이 동일한 기계에서 실행되는 경우

각 Java 애플리케이션은 특정 Java Virtual Machine 인스턴스에서 실행됩니다.나는 정말 아래 부분에 대해 혼란스러워하고 있고 구글링은 나를 더욱 혼란스럽게 했다.사이트마다 다른 기사.

  1. Java로 작성된 웹 서비스가 있는 경우 실행하기 위해 JVM 인스턴스가 필요합니다.그렇다면 JVM을 데몬 프로세스로 만들 수 있을까요?

  2. 다른 Java 애플리케이션을 실행할 때 이 JVM 인스턴스를 사용하거나 새 인스턴스를 만들 수 있습니까?

  3. 모든 기계에서 사용 가능한 메인 메모리는 일정합니다.초기 힙 크기를 제공하지 않고 n개의 Java 프로세스를 동시에 시작할 때 힙 크기는 프로세스 간에 어떻게 분산됩니까?

  4. n개의 JVM 인스턴스를 관리하는 프로세스 또는 OS 자체에서 관리하는 프로세스가 있습니까?

  5. GC 중에 중단이 발생하면 다른 JVM 인스턴스(다른 스레드)가 영향을 받습니까?

1) Java로 기술된 웹 서비스가 있는 경우 실행하려면 JVM 인스턴스가 필요합니다.그렇다면 JVM을 데몬 프로세스로 만들 수 있을까요?

네, 할 수 있어요.방법은 OS 및 웹 서버 컨테이너 자체에 따라 달라집니다.

2) 다른 Java 어플리케이션을 실행할 때 이 JVM 인스턴스를 사용하거나 새 인스턴스를 만들 수 있습니까?

아니요. 각 Java 애플리케이션은 독립된 JVM을 사용합니다.

각 JVM은 개별 프로세스이므로 스택, 힙 등의 공유는 없습니다.(일반적으로 공유할 수 있는 것은 코어 JVM과 네이티브 라이브러리의 코드를 유지하는 읽기 전용 세그먼트뿐입니다.일반적인 프로세스가 코드 세그먼트를 공유하는 것과 같은 방법으로).

3) 모든 기계에서 사용 가능한 메인 메모리는 일정합니다.초기 힙 크기를 제공하지 않고 n개의 Java 프로세스를 동시에 시작할 때 힙 크기는 프로세스 간에 어떻게 분산됩니까?

크기를 지정하지 않을 경우 힙 크기를 결정하는 메커니즘은 사용 중인 JVM/플랫폼/버전에 따라 다르며 "클라이언트" 또는 "서버" 모델(Hotspot JVM용)을 사용하는지 여부에 따라 달라집니다.경험적 접근법에서는 다른 JVM의 수나 크기는 고려하지 않습니다.

참고 자료: https://stackoverflow.com/a/4667635/139985

실제로 힙 크기를 직접 지정하는 것이 좋습니다.

4) n개의 JVM 인스턴스를 관리하는 프로세스 또는 OS 자체에서 관리하는 프로세스가 있습니까?

둘 다 아니다.JVM 인스턴스의 수는 프로세스를 시작할 수 있는 다양한 작업(데몬 스크립트, 명령어 스크립트, 명령줄에서 명령어를 입력하는 사용자 등)에 의해 결정됩니다.궁극적으로 리소스가 부족할 경우 OS는 더 이상의 프로세스 시작을 거부할 수 있지만 JVM은 다른 프로세스와 동일하게 취급되지 않습니다.

5) GC 중에 중단이 발생하면 다른 JVM 인스턴스(다른 스레드)가 영향을 받습니까?

아니요. JVM은 독립된 프로세스입니다.그들은 어떤 변이 가능한 상태도 공유하지 않는다.가비지 컬렉션은 각 JVM에서 독립적으로 작동합니다.

  1. Java 프로그램을 데몬화하는 방법을 참조하십시오.
  2. JVM의 새 인스턴스가 생성됩니다.
  3. 다른 모든 프로세스 간에 메모리가 공유되는 것과 같은 방법으로
  4. O/S에 의해 관리된다.
  5. 다른 인스턴스는 영향을 받지 않습니다.

인스턴스가 작업을 조정해야 하는 경우 다른 인스턴스를 실행/정지하는 단일 기본 인스턴스를 만들 수 있습니다.

JVM 인스턴스가 여러 개 필요한 이유는 설명하지 않았습니다.단일 인스턴스가 더 효과적일 수 있습니다.

언급URL : https://stackoverflow.com/questions/18394560/when-multiple-java-programs-run-on-the-same-machine

반응형