मैं सिर्फ जावा (ग्रोवी) एप्लिकेशन में अपने सभी धागे के लिए स्टैक आकार को नियंत्रित करना चाहता हूं। हॉटस्पॉट ओरेकल वीएम के लिए, मुझे पता है कि दो पैरामीटर ऐसा कर रहे हैं (-Xss
और XX:ThreadStackSize
)।-Xss और -XX: ThreadStackSize के बीच क्या अंतर है?
पसंदीदा क्या है? क्या उनके बीच कोई अंतर है? ओपन जेडीके 7 someone asked on the mailing list के बारे में बताते हुए, -Xss
हॉटपॉट वीएम के लिए -XX:ThreadStackSize
के समान है।
मुद्दा यह है कि मैं माप रहा हूं कि मेरे सिस्टम पर कितने धागे शुरू किए जा सकते हैं। - XX:ThreadStackSize
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
}
दिलचस्प बात यह मैं सिर्फ का उपयोग कर धागे की की संख्या कम मिलती है: मेरे ग्रूवी स्क्रिप्ट जो ऐसा करता है की तरह लग रहा है। मैं पर्यावरण चर JAVA_OPTS में विभिन्न सामग्री के साथ और साथ groovy आवेदन शुरू कर रहा हूँ।
groovy countmax-threads.groovy
जब मैं -XX:ThreadStackSize=2m
को JAVA_OPTS निर्धारित करते हैं, मैं 1000 के बारे में धागे शुरू कर दिया जब तक स्मृति सेवन किया जाता है मिलता है। लेकिन, जब मैं JAVA_OPTS='-Xss2m'
का उपयोग करता हूं, तो मुझे अपेक्षित त्रुटि उत्पन्न होने तक लगभग 32000 धागे मिलते हैं। तो ऐसा लगता है कि -Xss
बिल्कुल काम नहीं करता है।
मैं
उपयोग कर रहा हूँ जावा संस्करण "1.8.0_05"
जावा (टीएम) एसई रनटाइम वातावरण (निर्माण 1.8.0_05-B13)
जावा हॉटस्पॉट (टीएम) 64-बिट सर्वर वी एम (25.5 निर्माण -b02, मिश्रित मोड)
औबंटू 14.04 64 बिट मशीन पर चार हार्डवेयर धागे और लगभग 8 जीबी रैम के साथ।
अद्यतन:
मैं अपने विंडोज 7 64 बिट मशीन और एक अन्य JDK पर इस पुन: सत्यापित:
जावा संस्करण "1.8.0_20" जावा (टीएम) एसई रनटाइम वातावरण (निर्माण 1.8.0_20-B26) जावा हॉटस्पॉट (टीएम) 64-बिट सर्वर वी एम (25.20-B23, मिश्रित मोड का निर्माण)
और वहाँ -Xss
और -XX:ThreadStackSize
काम अपेक्षा के अनुरूप (के रूप में कुछ जवाब ने बताया)। तो मुझे लगता है कि यह एक लिनक्स विशिष्ट समस्या है या जेडीके संस्करण 1.8.05 में भी एक बग है।
हो सकता है कि किसी को एक अन्य वी एम के साथ अपने मशीन पर पुष्टि कर सकते हैं? मैंने स्क्रिप्ट के लिए groovy 2.3.9 का उपयोग किया ... – user2078148
लिनक्स पर समान व्यवहार: जावा संस्करण "1.8.0_45" जावा (टीएम) एसई रनटाइम पर्यावरण (1.8.0_45-बी 14 बनाएँ) जावा हॉटस्पॉट (टीएम) 64- बिट सर्वर वीएम (25.45-बी 022, मिश्रित मोड का निर्माण) मुझे लिनक्स विशिष्ट जेवीएम समस्या की तरह लगता है ... – user2078148