>source

Java (Groovy) 응용 프로그램의 모든 스레드의 스택 크기를 제어하려고합니다. 핫스팟 Oracle VM의 경우, 나는 그 (것)들을하는 두 개의 매개 변수가 있다는 것을 알고있다.

어떤 선호하는 것입니까? 그들 사이에는 차이가 있습니까? 열려있는 JDK 7에 관해서는 그것을 말하고 있습니다-xss.Hotpot VM과 동일합니다-XX : threadstacksize...에

요점은 시스템에서 몇 개의 스레드를 시작할 수 있는지를 측정하고 있습니다. 이것이 보이는 내 Groovy 스크립트 :

int count= 0
def printCountThreads= {
     println("XXX There were started $count threads.")
}
try {
    while(true){
            new Thread({Thread.sleep(Integer.MAX_VALUE)}).start()
            count++
            if(count % 1000== 0){
                    printCountThreads()
            }
    }
} catch (Throwable e){
    printCountThreads()
    throw e
}

흥미롭게도 충분히 나의 스레드 수를 줄일 수 있습니다 -xx : threadstacksize....에 환경 변수 JAVA_OPTS에서 다른 콘텐츠와 함께 그루비 응용 프로그램을 시작하고 있습니다.

groovy countmax-threads.groovy

java_opts를 설정하면-XX : threadstacksize= 2m., 메모리가 소비 될 때까지 약 1000 개의 스레드가 시작됩니다. 그러나 내가 사용할 때java_opts= '-xss2m', 예상되는 오류가 발생할 때까지 약 32000 개의 스레드가 발생합니다. 그래서 그것은 그 것처럼 보입니다-xss.전혀 작동하지 않습니다.

나는 사용하고 있습니다

Java 버전 "1.8.0_05"

Java (TM) SE 런타임 환경 (빌드 1.8.0_05-B13) Java 핫스팟 (TM) 64 비트 서버 VM (빌드 25.5-B02, 혼합 모드)

Ubuntu 14.04 64 개의 하드웨어 스레드와 약 8GB의 RAM이있는 64 비트 기계.

업데이트 :

내 Windows 7 64 비트 기계와 다른 JDK 에서이 문제를 재확인했습니다.

Java 버전 "1.8.0_20" Java (TM) SE 런타임 환경 (빌드 1.8.0_20-B26) Java 핫스팟 (TM) 64 비트 서버 VM (Build 25.20-B23, 혼합 모드)

와 그곳에 있습니다-xss.그리고-XX : threadstacksize.예상대로 일하십시오 (일부 답변이 지적됨). 그래서 나는 그것이 Linux 특정 문제 또는 JDK 버전 1.8.05의 버그라고 가정합니다.

어쩌면 누군가 다른 VM으로 자신의 기계에서 확인할 수 있을까요? 나는 스크립트에 Groovy 2.3.9를 사용했습니다 ...

user20781482021-09-17 08:34:58

Linux : Java 버전 "1.8.0_45"Java (TM) SE 런타임 환경 (빌드 1.8.0_45-B14) Java 핫스팟 (TM) 64 비트 서버 VM (Build 25.45-B02, 혼합 모드) Linux 특정 JVM 문제 ...

user20781482021-09-17 08:34:58
  • 이전 asterisk : 별표 멀티 캐스트 (SIP)
  • 다음 kubernetes : Helm 차트에서 여러 env 변수입니다