여러 Java 프로그램이 동일한 기계에서 실행되는 경우
각 Java 애플리케이션은 특정 Java Virtual Machine 인스턴스에서 실행됩니다.나는 정말 아래 부분에 대해 혼란스러워하고 있고 구글링은 나를 더욱 혼란스럽게 했다.사이트마다 다른 기사.
Java로 작성된 웹 서비스가 있는 경우 실행하기 위해 JVM 인스턴스가 필요합니다.그렇다면 JVM을 데몬 프로세스로 만들 수 있을까요?
다른 Java 애플리케이션을 실행할 때 이 JVM 인스턴스를 사용하거나 새 인스턴스를 만들 수 있습니까?
모든 기계에서 사용 가능한 메인 메모리는 일정합니다.초기 힙 크기를 제공하지 않고 n개의 Java 프로세스를 동시에 시작할 때 힙 크기는 프로세스 간에 어떻게 분산됩니까?
n개의 JVM 인스턴스를 관리하는 프로세스 또는 OS 자체에서 관리하는 프로세스가 있습니까?
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에서 독립적으로 작동합니다.
- Java 프로그램을 데몬화하는 방법을 참조하십시오.
- JVM의 새 인스턴스가 생성됩니다.
- 다른 모든 프로세스 간에 메모리가 공유되는 것과 같은 방법으로
- O/S에 의해 관리된다.
- 다른 인스턴스는 영향을 받지 않습니다.
인스턴스가 작업을 조정해야 하는 경우 다른 인스턴스를 실행/정지하는 단일 기본 인스턴스를 만들 수 있습니다.
JVM 인스턴스가 여러 개 필요한 이유는 설명하지 않았습니다.단일 인스턴스가 더 효과적일 수 있습니다.
언급URL : https://stackoverflow.com/questions/18394560/when-multiple-java-programs-run-on-the-same-machine
'programing' 카테고리의 다른 글
URL에 PHP가 포함된 특정 문자열이 있는지 확인합니다. (0) | 2022.11.23 |
---|---|
Java의 ByteBuffer에서 바이트 배열을 가져옵니다. (0) | 2022.11.03 |
모든 JVM 플래그 인쇄 (0) | 2022.11.03 |
오래된 데이터를 잃지 않고 FileOutputStream을 사용하여 데이터를 쓰는 방법 (0) | 2022.11.03 |
캐시 회선 크기에 맞게 조정하는 방법 및 시기 (0) | 2022.11.03 |