JVM opsiyonu -Xss - Tam olarak ne yapar?


Yanıtlar:


269

Java uygulamasındaki her iş parçacığının kendi yığını vardır . Yığın, dönüş adreslerini, işlev / yöntem çağrısı bağımsız değişkenlerini, vb. Sun JVM ile bu boyutu bu parametre ile ayarlayabilirsiniz.


11
Yani, -Xss seçeneği bir yığının ne kadar bellek tüketeceğini sınırlamak için kullanılır (dönüş adreslerini, değişkenleri vb. Saklayarak) ve bu da yığının ne kadar derine inebileceğini dolaylı olarak sınırlar? Doğrumuyum?
instantsetsuna

5
@instantsetsuna: Bence daha yaygın kullanım muhtemelen varsayılan sınırı artırmaktır . (Her zaman bir sınır vardır.) Ama evet, yığının boyutunu kontrol ediyorsunuz, bu da yığının ne kadar derin olabileceğini kontrol ediyor.
TJ Crowder

Java derleyicisindeki bu XSS ayarının eşdeğerini nasıl yapıyorsunuz (aka javac)? Sınıfların derlenmesinde büyük kuyruk özyinelemesine neden olan skala tabanlı kütüphaneler kullananlar için bir sorun - Andrew Norman 9 saniye önce
Andrew Norman

@AndrewNorman: Java çalışma zamanı seçeneklerini sınıf dosyasına derlemezsiniz, bu daha çevreye özgü bir şeydir. Gerçekten kodda yapmanız gerekiyorsa, tek işi ihtiyacınız olan seçeneklerle gerçek uygulamanızı başlatmak olan küçük bir ana sınıf yazabilirsiniz.
TJ Crowder

@AndrewNorman Derleyicinin -Jflagsözdizimi kullanarak çalışması gereken JVM yapılandırma bayraklarını verebilirsiniz (örn. -J-Xss).
francoisr

166

Gerçekten de bir JVM'deki yığın boyutunu ayarlar.

Bu iki durumdan birine dokunmalısınız:

  • StackOverflowError (yığın boyutu sınırdan büyük), değeri artırın
  • OutOfMemoryError: yeni yerel iş parçacığı oluşturulamıyor (çok fazla iş parçacığı, her iş parçacığının büyük bir yığını var), azaltın.

İkincisi genellikle Xss'iniz çok büyük olarak ayarlandığında gelir - o zaman onu dengelemeniz gerekir (test!)


3
Aslında her seferinde değil. Farklı şekilde düzeltilmesi gereken farklı nedenlerden dolayı hem SOE hem de OOME oluşabilir.
noego

4
Doğru, ama ben -Xss SOE ve OOME için tek neden olduğunu söylemedim, ama tam tersi - yanlış ayarlanırsa, bu ikisinden birine neden olabilir.
Adam Adamaszek

5

Her iş parçacığının yerel değişkenler ve iç değerler için kullanılan bir yığını vardır. Yığın boyutu, aramalarınızın ne kadar derin olabileceğini sınırlar. Genel olarak bu değiştirmeniz gereken bir şey değildir.


4

Yanılmıyorsam, JVM'ye bir StackOverflowError vermeden önce ne kadar ardışık çağrı kabul edeceğini söyleyen budur. Genel olarak değiştirmek istediğiniz bir şey değil.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.